See benchmarks from Heine in this forum post http://drupal.org/node/1020494#comment-3947826

Which I reproduced here: http://ca.tchpole.net/node/2

Critical because:

- there's no aggressive caching via the UI in Drupal 7, so no workaround for the majority of sites.
- sites upgraded from Drupal 6 will only be able to serve 2/3 the requests they could to anonymous users before they fall over.

Around a year ago, I did comparison benchmarks between Drupal 6 and 7 page caching, and they were within 5% of each other. So some patch in the past year has caused the regression.

Berdir pointed out:

The by far slowest function for me is date_default_timezone_set() with almost 20% of the total time.

That is from this line:
date_default_timezone_set(drupal_get_user_timezone());
And that line was added in this issue: http://drupal.org/node/348448

That looks pretty likely to me. This is the patch that was committed:
http://drupal.org/node/348448#comment-2830898

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

catch’s picture

More issues for background:

#668496: Timezone error on D7 install

Most of the discussion happened in:
#325827: Avoid PHP strict timezone warnings by calling date_default_timezone_set in bootstrap

Benchmarks again (different localhost to yesterday):

oncurrency Level:      1
Time taken for tests:   8.243 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      7635000 bytes
HTML transferred:       7214000 bytes
Requests per second:    121.31 [#/sec] (mean)
Time per request:       8.243 [ms] (mean)
Time per request:       8.243 [ms] (mean, across all concurrent requests)
Transfer rate:          904.49 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     6    8   1.5      8      16
Waiting:        6    8   1.5      8      16
Total:          6    8   1.5      8      16

The timezone stuff is taking about 5ms on my system. That's definitely accounting for part of this if not all.

Attached screenshot showing that.

Looks like we don't really need to call that so early in bootstrap, and could get away with it only happening in full bootstrap, plus a couple of other places (i.e. it'd need to be called before we call strtotime() when serving cached pages, but we only need to do that for requests sending an if modified since header).

Also, looking in strace I can see both system and overlay modules being loaded - these are both bootstrap modules on my install (which is a clean install from just now), definitely weren't in Drupal 6.

You can see the syscalls for the blocked_ips, cache_page db query, and timezone set here, note:

3718  writev(9, [{"HTTP/1.1 200 OK\r\nDate: Thu, 17 F"..., 482}, {"\37\213\10\0\0\0\0\0\0\3\265X[w\323\270\26~\317\257\20\342\2059\247\266\222R\312\320I\314"..., 2212}], 2) = 2694

2694 compared to 2790 for pulling the cached database from the database, so that's definitely a significant regression.

3718  write(10, "1\0\0\0\3SELECT 1 FROM blocked_ips W"..., 53) = 53
3718  read(10, "\1\0\0\1\1\27\0\0\2\3def\0\0\0\0011\0\f?\0\1\0\0\0\10\201\0\0\0\0"..., 16384) = 50
3718  poll([{fd=10, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
3718  write(10, "\341\0\0\0\3SELECT cache_page.cid AS ci"..., 229) = 229
3718  read(10, "\1\0\0\1\0052\0\0\2\3def\2d7\ncache_page\ncach"..., 16384) = 2790
3718  open("/usr/share/zoneinfo/Asia/Tokyo", O_RDONLY) = 11
3718  fstat(11, {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718  mmap(NULL, 331, PROT_READ, MAP_SHARED, 11, 0) = 0x7f6df42c7000
3718  close(11)                         = 0
3718  munmap(0x7f6df42c7000, 331)       = 0
3718  stat("/usr/share/zoneinfo/Asia/Tokyo", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718  chdir("/")                        = 0
3718  umask(022)                        = 022
3718  write(10, "\1\0\0\0\1", 5)        = 5
3718  shutdown(10, 2 /* send and receive */) = 0
3718  close(10)                         = 0
3718  open("/dev/urandom", O_RDONLY)    = 10
3718  read(10, "\343kG|bq,\231", 8)     = 8
3718  close(10)                         = 0
3718  open("/dev/urandom", O_RDONLY)    = 10
3718  read(10, "\304*\263G\303\r\32\263", 8) = 8
3718  close(10)                         = 0
3718  open("/dev/urandom", O_RDONLY)    = 10
3718  read(10, "\237\364>\267\233\27J\261", 8) = 8
3718  close(10)                         = 0
3718  setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
3718  writev(9, [{"HTTP/1.1 200 OK\r\nDate: Thu, 17 F"..., 482}, {"\37\213\10\0\0\0\0\0\0\3\265X[w\323\270\26~\317\257\20\342\2059\247\266\222R\312\320I\314"..., 2212}], 2) = 2694

Here's another request, not sure what triggers the full lookup, all I did was refresh the browser a couple of times. I've seen this before on full bootstrap in strace, but didn't have time to look into it yet:

3718  write(10, "1\0\0\0\3SELECT 1 FROM blocked_ips W"..., 53) = 53
3718  read(10, "\1\0\0\1\1\27\0\0\2\3def\0\0\0\0011\0\f?\0\1\0\0\0\10\201\0\0\0\0"..., 16384) = 50
3718  poll([{fd=10, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
3718  write(10, "\341\0\0\0\3SELECT cache_page.cid AS ci"..., 229) = 229
3718  read(10, "\1\0\0\1\0052\0\0\2\3def\2d7\ncache_page\ncach"..., 16384) = 2790
3718  open("/usr/share/zoneinfo/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 71 entries */, 32768) = 2064
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo//localtime", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718  stat("/usr/share/zoneinfo//Zulu", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//WET", {st_mode=S_IFREG|0644, st_size=1873, ...}) = 0
3718  stat("/usr/share/zoneinfo//W-SU", {st_mode=S_IFREG|0644, st_size=2194, ...}) = 0
3718  stat("/usr/share/zoneinfo//Universal", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//US", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//UCT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//Turkey", {st_mode=S_IFREG|0644, st_size=2721, ...}) = 0
3718  stat("/usr/share/zoneinfo//SystemV", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Singapore", {st_mode=S_IFREG|0644, st_size=402, ...}) = 0
3718  stat("/usr/share/zoneinfo//ROK", {st_mode=S_IFREG|0644, st_size=380, ...}) = 0
3718  stat("/usr/share/zoneinfo//ROC", {st_mode=S_IFREG|0644, st_size=724, ...}) = 0
3718  stat("/usr/share/zoneinfo//Portugal", {st_mode=S_IFREG|0644, st_size=3439, ...}) = 0
3718  stat("/usr/share/zoneinfo//Poland", {st_mode=S_IFREG|0644, st_size=2679, ...}) = 0
3718  stat("/usr/share/zoneinfo//Pacific", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//PST8PDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718  stat("/usr/share/zoneinfo//PRC", {st_mode=S_IFREG|0644, st_size=405, ...}) = 0
3718  stat("/usr/share/zoneinfo//Navajo", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718  stat("/usr/share/zoneinfo//NZ-CHAT", {st_mode=S_IFREG|0644, st_size=2018, ...}) = 0
3718  stat("/usr/share/zoneinfo//NZ", {st_mode=S_IFREG|0644, st_size=2434, ...}) = 0
3718  stat("/usr/share/zoneinfo//Mideast", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Mexico", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//MST7MDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718  stat("/usr/share/zoneinfo//MST", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//MET", {st_mode=S_IFREG|0644, st_size=2102, ...}) = 0
3718  stat("/usr/share/zoneinfo//Libya", {st_mode=S_IFREG|0644, st_size=599, ...}) = 0
3718  stat("/usr/share/zoneinfo//Kwajalein", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718  stat("/usr/share/zoneinfo//Japan", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718  stat("/usr/share/zoneinfo//Jamaica", {st_mode=S_IFREG|0644, st_size=481, ...}) = 0
3718  stat("/usr/share/zoneinfo//Israel", {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
3718  stat("/usr/share/zoneinfo//Iran", {st_mode=S_IFREG|0644, st_size=1622, ...}) = 0
3718  stat("/usr/share/zoneinfo//Indian", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Iceland", {st_mode=S_IFREG|0644, st_size=1141, ...}) = 0
3718  stat("/usr/share/zoneinfo//Hongkong", {st_mode=S_IFREG|0644, st_size=1159, ...}) = 0
3718  stat("/usr/share/zoneinfo//HST", {st_mode=S_IFREG|0644, st_size=119, ...}) = 0
3718  stat("/usr/share/zoneinfo//Greenwich", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//GMT0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//GMT-0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//GMT+0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//GMT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//GB-Eire", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718  stat("/usr/share/zoneinfo//GB", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718  stat("/usr/share/zoneinfo//Factory", {st_mode=S_IFREG|0644, st_size=255, ...}) = 0
3718  stat("/usr/share/zoneinfo//Europe", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Etc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Eire", {st_mode=S_IFREG|0644, st_size=3533, ...}) = 0
3718  stat("/usr/share/zoneinfo//Egypt", {st_mode=S_IFREG|0644, st_size=9371, ...}) = 0
3718  stat("/usr/share/zoneinfo//EST5EDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718  stat("/usr/share/zoneinfo//EST", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo//EET", {st_mode=S_IFREG|0644, st_size=1876, ...}) = 0
3718  stat("/usr/share/zoneinfo//Cuba", {st_mode=S_IFREG|0644, st_size=2411, ...}) = 0
3718  stat("/usr/share/zoneinfo//Chile", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Canada", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//CST6CDT", {st_mode=S_IFREG|0644, st_size=2294, ...}) = 0
3718  stat("/usr/share/zoneinfo//CET", {st_mode=S_IFREG|0644, st_size=2102, ...}) = 0
3718  stat("/usr/share/zoneinfo//Brazil", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Australia", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Atlantic", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Asia", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
3718  stat("/usr/share/zoneinfo//Arctic", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//Antarctica", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo//America", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0
3718  stat("/usr/share/zoneinfo//Africa", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  open("/usr/share/zoneinfo/Africa", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 55 entries */, 32768) = 1744
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Africa/Windhoek", {st_mode=S_IFREG|0644, st_size=1556, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Tunis", {st_mode=S_IFREG|0644, st_size=684, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Tripoli", {st_mode=S_IFREG|0644, st_size=599, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Timbuktu", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Sao_Tome", {st_mode=S_IFREG|0644, st_size=173, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Porto-Novo", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Ouagadougou", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Nouakchott", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Niamey", {st_mode=S_IFREG|0644, st_size=225, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Ndjamena", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Nairobi", {st_mode=S_IFREG|0644, st_size=253, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Monrovia", {st_mode=S_IFREG|0644, st_size=215, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Mogadishu", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Mbabane", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Maseru", {st_mode=S_IFREG|0644, st_size=204, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Maputo", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Malabo", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Lusaka", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Lubumbashi", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Luanda", {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Lome", {st_mode=S_IFREG|0644, st_size=139, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Libreville", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Lagos", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Kinshasa", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Kigali", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Khartoum", {st_mode=S_IFREG|0644, st_size=669, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Kampala", {st_mode=S_IFREG|0644, st_size=253, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Johannesburg", {st_mode=S_IFREG|0644, st_size=245, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Harare", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Gaborone", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Freetown", {st_mode=S_IFREG|0644, st_size=665, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/El_Aaiun", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Douala", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Djibouti", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Dar_es_Salaam", {st_mode=S_IFREG|0644, st_size=213, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Dakar", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Conakry", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Ceuta", {st_mode=S_IFREG|0644, st_size=2049, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Casablanca", {st_mode=S_IFREG|0644, st_size=542, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Cairo", {st_mode=S_IFREG|0644, st_size=9371, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Bujumbura", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Brazzaville", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Blantyre", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Bissau", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Banjul", {st_mode=S_IFREG|0644, st_size=232, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Bangui", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Bamako", {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Asmera", {st_mode=S_IFREG|0644, st_size=201, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Asmara", {st_mode=S_IFREG|0644, st_size=201, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Algiers", {st_mode=S_IFREG|0644, st_size=734, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Addis_Ababa", {st_mode=S_IFREG|0644, st_size=180, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Accra", {st_mode=S_IFREG|0644, st_size=378, ...}) = 0
3718  stat("/usr/share/zoneinfo/Africa/Abidjan", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  open("/usr/share/zoneinfo/America", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 139 entries */, 32768) = 4464
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  open("/proc/meminfo", O_RDONLY)   = 12
3718  fstat(12, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
3718  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6df42c7000
3718  read(12, "MemTotal:        2048688 kB\nMemF"..., 1024) = 1024
3718  close(12)                         = 0
3718  munmap(0x7f6df42c7000, 4096)      = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/America/Yellowknife", {st_mode=S_IFREG|0644, st_size=1966, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Yakutat", {st_mode=S_IFREG|0644, st_size=2288, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Winnipeg", {st_mode=S_IFREG|0644, st_size=2865, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Whitehorse", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Virgin", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Vancouver", {st_mode=S_IFREG|0644, st_size=2875, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Tortola", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Toronto", {st_mode=S_IFREG|0644, st_size=3477, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Tijuana", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Thunder_Bay", {st_mode=S_IFREG|0644, st_size=2185, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Thule", {st_mode=S_IFREG|0644, st_size=1514, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Tegucigalpa", {st_mode=S_IFREG|0644, st_size=264, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Swift_Current", {st_mode=S_IFREG|0644, st_size=560, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/St_Vincent", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/St_Thomas", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/St_Lucia", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/St_Kitts", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/St_Johns", {st_mode=S_IFREG|0644, st_size=3632, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/St_Barthelemy", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Shiprock", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Scoresbysund", {st_mode=S_IFREG|0644, st_size=1911, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Sao_Paulo", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Santo_Domingo", {st_mode=S_IFREG|0644, st_size=463, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Santiago", {st_mode=S_IFREG|0644, st_size=9209, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Santarem", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Santa_Isabel", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Rosario", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Rio_Branco", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Resolute", {st_mode=S_IFREG|0644, st_size=8554, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Regina", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Recife", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Rankin_Inlet", {st_mode=S_IFREG|0644, st_size=1900, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Rainy_River", {st_mode=S_IFREG|0644, st_size=2105, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Puerto_Rico", {st_mode=S_IFREG|0644, st_size=229, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Porto_Velho", {st_mode=S_IFREG|0644, st_size=574, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Porto_Acre", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Port_of_Spain", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Port-au-Prince", {st_mode=S_IFREG|0644, st_size=711, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Phoenix", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Paramaribo", {st_mode=S_IFREG|0644, st_size=294, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Pangnirtung", {st_mode=S_IFREG|0644, st_size=2062, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Panama", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Ojinaga", {st_mode=S_IFREG|0644, st_size=1492, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/North_Dakota", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Noronha", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Nome", {st_mode=S_IFREG|0644, st_size=2350, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Nipigon", {st_mode=S_IFREG|0644, st_size=2105, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/New_York", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Nassau", {st_mode=S_IFREG|0644, st_size=2270, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Montserrat", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Montreal", {st_mode=S_IFREG|0644, st_size=3477, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Montevideo", {st_mode=S_IFREG|0644, st_size=2118, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Monterrey", {st_mode=S_IFREG|0644, st_size=1402, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Moncton", {st_mode=S_IFREG|0644, st_size=3137, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Miquelon", {st_mode=S_IFREG|0644, st_size=1670, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Mexico_City", {st_mode=S_IFREG|0644, st_size=1604, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Merida", {st_mode=S_IFREG|0644, st_size=1426, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Menominee", {st_mode=S_IFREG|0644, st_size=2241, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Mendoza", {st_mode=S_IFREG|0644, st_size=1115, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Mazatlan", {st_mode=S_IFREG|0644, st_size=1534, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Matamoros", {st_mode=S_IFREG|0644, st_size=1402, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Martinique", {st_mode=S_IFREG|0644, st_size=231, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Marigot", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Manaus", {st_mode=S_IFREG|0644, st_size=602, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Managua", {st_mode=S_IFREG|0644, st_size=421, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Maceio", {st_mode=S_IFREG|0644, st_size=742, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Louisville", {st_mode=S_IFREG|0644, st_size=2755, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Los_Angeles", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Lima", {st_mode=S_IFREG|0644, st_size=395, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/La_Paz", {st_mode=S_IFREG|0644, st_size=217, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Knox_IN", {st_mode=S_IFREG|0644, st_size=2395, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Kentucky", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Juneau", {st_mode=S_IFREG|0644, st_size=2324, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Jujuy", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Jamaica", {st_mode=S_IFREG|0644, st_size=481, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Iqaluit", {st_mode=S_IFREG|0644, st_size=2000, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Inuvik", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indianapolis", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Hermosillo", {st_mode=S_IFREG|0644, st_size=424, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Havana", {st_mode=S_IFREG|0644, st_size=2411, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Halifax", {st_mode=S_IFREG|0644, st_size=3424, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Guyana", {st_mode=S_IFREG|0644, st_size=256, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Guayaquil", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Guatemala", {st_mode=S_IFREG|0644, st_size=292, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Guadeloupe", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Grenada", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Grand_Turk", {st_mode=S_IFREG|0644, st_size=1871, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Goose_Bay", {st_mode=S_IFREG|0644, st_size=3187, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Godthab", {st_mode=S_IFREG|0644, st_size=8296, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Glace_Bay", {st_mode=S_IFREG|0644, st_size=2192, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Fortaleza", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Fort_Wayne", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Ensenada", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/El_Salvador", {st_mode=S_IFREG|0644, st_size=236, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Eirunepe", {st_mode=S_IFREG|0644, st_size=640, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Edmonton", {st_mode=S_IFREG|0644, st_size=2388, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Dominica", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Detroit", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Denver", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Dawson_Creek", {st_mode=S_IFREG|0644, st_size=1033, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Dawson", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Danmarkshavn", {st_mode=S_IFREG|0644, st_size=700, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Curacao", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Cuiaba", {st_mode=S_IFREG|0644, st_size=1973, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Costa_Rica", {st_mode=S_IFREG|0644, st_size=315, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Cordoba", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Coral_Harbour", {st_mode=S_IFREG|0644, st_size=319, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Chihuahua", {st_mode=S_IFREG|0644, st_size=1492, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Chicago", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Cayman", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Cayenne", {st_mode=S_IFREG|0644, st_size=186, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Catamarca", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Caracas", {st_mode=S_IFREG|0644, st_size=224, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Cancun", {st_mode=S_IFREG|0644, st_size=1450, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Campo_Grande", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Cambridge_Bay", {st_mode=S_IFREG|0644, st_size=2052, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Buenos_Aires", {st_mode=S_IFREG|0644, st_size=1061, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Boise", {st_mode=S_IFREG|0644, st_size=2377, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Bogota", {st_mode=S_IFREG|0644, st_size=231, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Boa_Vista", {st_mode=S_IFREG|0644, st_size=630, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Blanc-Sablon", {st_mode=S_IFREG|0644, st_size=281, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Belize", {st_mode=S_IFREG|0644, st_size=962, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Belem", {st_mode=S_IFREG|0644, st_size=574, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Barbados", {st_mode=S_IFREG|0644, st_size=330, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Bahia_Banderas", {st_mode=S_IFREG|0644, st_size=1558, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Bahia", {st_mode=S_IFREG|0644, st_size=994, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Atka", {st_mode=S_IFREG|0644, st_size=2353, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Atikokan", {st_mode=S_IFREG|0644, st_size=319, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Asuncion", {st_mode=S_IFREG|0644, st_size=2020, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Aruba", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Araguaina", {st_mode=S_IFREG|0644, st_size=854, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Antigua", {st_mode=S_IFREG|0644, st_size=194, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Anguilla", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Anchorage", {st_mode=S_IFREG|0644, st_size=2358, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Adak", {st_mode=S_IFREG|0644, st_size=2353, ...}) = 0
3718  open("/usr/share/zoneinfo/America/Argentina", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 15 entries */, 32768) = 472
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Ushuaia", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Tucuman", {st_mode=S_IFREG|0644, st_size=1115, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/San_Luis", {st_mode=S_IFREG|0644, st_size=1125, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/San_Juan", {st_mode=S_IFREG|0644, st_size=1101, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Salta", {st_mode=S_IFREG|0644, st_size=1059, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Rio_Gallegos", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Mendoza", {st_mode=S_IFREG|0644, st_size=1115, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/La_Rioja", {st_mode=S_IFREG|0644, st_size=1101, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Jujuy", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Cordoba", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/ComodRivadavia", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Catamarca", {st_mode=S_IFREG|0644, st_size=1087, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Argentina/Buenos_Aires", {st_mode=S_IFREG|0644, st_size=1061, ...}) = 0
3718  open("/usr/share/zoneinfo/America/Indiana", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 10 entries */, 32768) = 296
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Winamac", {st_mode=S_IFREG|0644, st_size=1761, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Vincennes", {st_mode=S_IFREG|0644, st_size=1677, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Vevay", {st_mode=S_IFREG|0644, st_size=1397, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Tell_City", {st_mode=S_IFREG|0644, st_size=1677, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Petersburg", {st_mode=S_IFREG|0644, st_size=1887, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Marengo", {st_mode=S_IFREG|0644, st_size=1705, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Knox", {st_mode=S_IFREG|0644, st_size=2395, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Indiana/Indianapolis", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718  open("/usr/share/zoneinfo/America/Kentucky", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 4 entries */, 32768) = 112
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/America/Kentucky/Monticello", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/Kentucky/Louisville", {st_mode=S_IFREG|0644, st_size=2755, ...}) = 0
3718  open("/usr/share/zoneinfo/America/North_Dakota", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 4 entries */, 32768) = 112
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/America/North_Dakota/New_Salem", {st_mode=S_IFREG|0644, st_size=2363, ...}) = 0
3718  stat("/usr/share/zoneinfo/America/North_Dakota/Center", {st_mode=S_IFREG|0644, st_size=2363, ...}) = 0
3718  open("/usr/share/zoneinfo/Antarctica", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 13 entries */, 32768) = 408
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Vostok", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Syowa", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/South_Pole", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Rothera", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Palmer", {st_mode=S_IFREG|0644, st_size=8546, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/McMurdo", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Mawson", {st_mode=S_IFREG|0644, st_size=190, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Macquarie", {st_mode=S_IFREG|0644, st_size=1549, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/DumontDUrville", {st_mode=S_IFREG|0644, st_size=213, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Davis", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
3718  stat("/usr/share/zoneinfo/Antarctica/Casey", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718  open("/usr/share/zoneinfo/Arctic", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 3 entries */, 32768) = 80
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Arctic/Longyearbyen", {st_mode=S_IFREG|0644, st_size=2225, ...}) = 0
3718  open("/usr/share/zoneinfo/Asia", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 93 entries */, 32768) = 2920
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Asia/Yerevan", {st_mode=S_IFREG|0644, st_size=2012, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Yekaterinburg", {st_mode=S_IFREG|0644, st_size=2000, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Yakutsk", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Vladivostok", {st_mode=S_IFREG|0644, st_size=1929, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Vientiane", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Urumqi", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Ulan_Bator", {st_mode=S_IFREG|0644, st_size=834, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Ulaanbaatar", {st_mode=S_IFREG|0644, st_size=834, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Ujung_Pandang", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Tokyo", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Thimphu", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Thimbu", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Tel_Aviv", {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Tehran", {st_mode=S_IFREG|0644, st_size=1622, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Tbilisi", {st_mode=S_IFREG|0644, st_size=1100, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Tashkent", {st_mode=S_IFREG|0644, st_size=667, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Taipei", {st_mode=S_IFREG|0644, st_size=724, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Singapore", {st_mode=S_IFREG|0644, st_size=402, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Shanghai", {st_mode=S_IFREG|0644, st_size=405, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Seoul", {st_mode=S_IFREG|0644, st_size=380, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Samarkand", {st_mode=S_IFREG|0644, st_size=677, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Sakhalin", {st_mode=S_IFREG|0644, st_size=1961, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Saigon", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Riyadh89", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Riyadh88", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Riyadh87", {st_mode=S_IFREG|0644, st_size=8669, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Riyadh", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Rangoon", {st_mode=S_IFREG|0644, st_size=259, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Qyzylorda", {st_mode=S_IFREG|0644, st_size=1068, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Qatar", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Pyongyang", {st_mode=S_IFREG|0644, st_size=242, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Pontianak", {st_mode=S_IFREG|0644, st_size=359, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Phnom_Penh", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Oral", {st_mode=S_IFREG|0644, st_size=1086, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Omsk", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Novosibirsk", {st_mode=S_IFREG|0644, st_size=1944, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Novokuznetsk", {st_mode=S_IFREG|0644, st_size=1968, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Nicosia", {st_mode=S_IFREG|0644, st_size=2002, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Muscat", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Manila", {st_mode=S_IFREG|0644, st_size=319, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Makassar", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Magadan", {st_mode=S_IFREG|0644, st_size=1915, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Macau", {st_mode=S_IFREG|0644, st_size=781, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Macao", {st_mode=S_IFREG|0644, st_size=781, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kuwait", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kuching", {st_mode=S_IFREG|0644, st_size=505, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kuala_Lumpur", {st_mode=S_IFREG|0644, st_size=372, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Krasnoyarsk", {st_mode=S_IFREG|0644, st_size=1914, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kolkata", {st_mode=S_IFREG|0644, st_size=265, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Katmandu", {st_mode=S_IFREG|0644, st_size=198, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kathmandu", {st_mode=S_IFREG|0644, st_size=198, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kashgar", {st_mode=S_IFREG|0644, st_size=419, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Karachi", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kamchatka", {st_mode=S_IFREG|0644, st_size=1915, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Kabul", {st_mode=S_IFREG|0644, st_size=173, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Jerusalem", {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Jayapura", {st_mode=S_IFREG|0644, st_size=209, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Jakarta", {st_mode=S_IFREG|0644, st_size=344, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Istanbul", {st_mode=S_IFREG|0644, st_size=2721, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Irkutsk", {st_mode=S_IFREG|0644, st_size=1935, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Hovd", {st_mode=S_IFREG|0644, st_size=834, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Hong_Kong", {st_mode=S_IFREG|0644, st_size=1159, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Ho_Chi_Minh", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Harbin", {st_mode=S_IFREG|0644, st_size=447, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Gaza", {st_mode=S_IFREG|0644, st_size=2285, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Dushanbe", {st_mode=S_IFREG|0644, st_size=597, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Dubai", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Dili", {st_mode=S_IFREG|0644, st_size=277, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Dhaka", {st_mode=S_IFREG|0644, st_size=364, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Damascus", {st_mode=S_IFREG|0644, st_size=2306, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Dacca", {st_mode=S_IFREG|0644, st_size=364, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Colombo", {st_mode=S_IFREG|0644, st_size=347, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Chungking", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Chongqing", {st_mode=S_IFREG|0644, st_size=389, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Choibalsan", {st_mode=S_IFREG|0644, st_size=890, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Calcutta", {st_mode=S_IFREG|0644, st_size=265, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Brunei", {st_mode=S_IFREG|0644, st_size=187, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Bishkek", {st_mode=S_IFREG|0644, st_size=1047, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Beirut", {st_mode=S_IFREG|0644, st_size=2149, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Bangkok", {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Baku", {st_mode=S_IFREG|0644, st_size=1942, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Bahrain", {st_mode=S_IFREG|0644, st_size=195, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Baghdad", {st_mode=S_IFREG|0644, st_size=962, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Ashkhabad", {st_mode=S_IFREG|0644, st_size=657, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Ashgabat", {st_mode=S_IFREG|0644, st_size=657, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Aqtobe", {st_mode=S_IFREG|0644, st_size=1038, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Aqtau", {st_mode=S_IFREG|0644, st_size=1112, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Anadyr", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Amman", {st_mode=S_IFREG|0644, st_size=8504, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Almaty", {st_mode=S_IFREG|0644, st_size=922, ...}) = 0
3718  stat("/usr/share/zoneinfo/Asia/Aden", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  open("/usr/share/zoneinfo/Atlantic", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 14 entries */, 32768) = 440
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Stanley", {st_mode=S_IFREG|0644, st_size=1961, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/St_Helena", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/South_Georgia", {st_mode=S_IFREG|0644, st_size=139, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Reykjavik", {st_mode=S_IFREG|0644, st_size=1141, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Madeira", {st_mode=S_IFREG|0644, st_size=3452, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Jan_Mayen", {st_mode=S_IFREG|0644, st_size=2225, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Faroe", {st_mode=S_IFREG|0644, st_size=1815, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Faeroe", {st_mode=S_IFREG|0644, st_size=1815, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Cape_Verde", {st_mode=S_IFREG|0644, st_size=240, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Canary", {st_mode=S_IFREG|0644, st_size=1899, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Bermuda", {st_mode=S_IFREG|0644, st_size=1990, ...}) = 0
3718  stat("/usr/share/zoneinfo/Atlantic/Azores", {st_mode=S_IFREG|0644, st_size=3462, ...}) = 0
3718  open("/usr/share/zoneinfo/Australia", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 25 entries */, 32768) = 752
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Australia/Yancowinna", {st_mode=S_IFREG|0644, st_size=2237, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/West", {st_mode=S_IFREG|0644, st_size=440, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Victoria", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Tasmania", {st_mode=S_IFREG|0644, st_size=2295, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Sydney", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/South", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Queensland", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Perth", {st_mode=S_IFREG|0644, st_size=440, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/North", {st_mode=S_IFREG|0644, st_size=288, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/NSW", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Melbourne", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Lord_Howe", {st_mode=S_IFREG|0644, st_size=1821, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Lindeman", {st_mode=S_IFREG|0644, st_size=483, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/LHI", {st_mode=S_IFREG|0644, st_size=1821, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Hobart", {st_mode=S_IFREG|0644, st_size=2295, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Eucla", {st_mode=S_IFREG|0644, st_size=446, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Darwin", {st_mode=S_IFREG|0644, st_size=288, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Currie", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Canberra", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Broken_Hill", {st_mode=S_IFREG|0644, st_size=2237, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Brisbane", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/Adelaide", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718  stat("/usr/share/zoneinfo/Australia/ACT", {st_mode=S_IFREG|0644, st_size=2183, ...}) = 0
3718  open("/usr/share/zoneinfo/Brazil", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 6 entries */, 32768) = 152
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Brazil/West", {st_mode=S_IFREG|0644, st_size=602, ...}) = 0
3718  stat("/usr/share/zoneinfo/Brazil/East", {st_mode=S_IFREG|0644, st_size=2001, ...}) = 0
3718  stat("/usr/share/zoneinfo/Brazil/DeNoronha", {st_mode=S_IFREG|0644, st_size=714, ...}) = 0
3718  stat("/usr/share/zoneinfo/Brazil/Acre", {st_mode=S_IFREG|0644, st_size=612, ...}) = 0
3718  open("/usr/share/zoneinfo/Canada", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 11 entries */, 32768) = 344
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Canada/Yukon", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/Saskatchewan", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/Pacific", {st_mode=S_IFREG|0644, st_size=2875, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/Newfoundland", {st_mode=S_IFREG|0644, st_size=3632, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/Mountain", {st_mode=S_IFREG|0644, st_size=2388, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/Eastern", {st_mode=S_IFREG|0644, st_size=3477, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/East-Saskatchewan", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/Central", {st_mode=S_IFREG|0644, st_size=2865, ...}) = 0
3718  stat("/usr/share/zoneinfo/Canada/Atlantic", {st_mode=S_IFREG|0644, st_size=3424, ...}) = 0
3718  open("/usr/share/zoneinfo/Chile", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 4 entries */, 32768) = 112
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Chile/EasterIsland", {st_mode=S_IFREG|0644, st_size=8971, ...}) = 0
3718  stat("/usr/share/zoneinfo/Chile/Continental", {st_mode=S_IFREG|0644, st_size=9209, ...}) = 0
3718  open("/usr/share/zoneinfo/Etc", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 37 entries */, 32768) = 1128
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Etc/Zulu", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/Universal", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/UCT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/Greenwich", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-9", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-8", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-7", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-6", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-5", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-4", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-3", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-2", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-14", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-13", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-12", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-11", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-10", {st_mode=S_IFREG|0644, st_size=131, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-1", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT-0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+9", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+8", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+7", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+6", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+5", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+4", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+3", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+2", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+12", {st_mode=S_IFREG|0644, st_size=130, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+11", {st_mode=S_IFREG|0644, st_size=130, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+10", {st_mode=S_IFREG|0644, st_size=130, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+1", {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT+0", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  stat("/usr/share/zoneinfo/Etc/GMT", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
3718  open("/usr/share/zoneinfo/Europe", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 60 entries */, 32768) = 1872
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Europe/Zurich", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Zaporozhye", {st_mode=S_IFREG|0644, st_size=2085, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Zagreb", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Warsaw", {st_mode=S_IFREG|0644, st_size=2679, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Volgograd", {st_mode=S_IFREG|0644, st_size=1982, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Vilnius", {st_mode=S_IFREG|0644, st_size=2173, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Vienna", {st_mode=S_IFREG|0644, st_size=2211, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Vatican", {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Vaduz", {st_mode=S_IFREG|0644, st_size=1799, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Uzhgorod", {st_mode=S_IFREG|0644, st_size=2077, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Tiraspol", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Tirane", {st_mode=S_IFREG|0644, st_size=2084, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Tallinn", {st_mode=S_IFREG|0644, st_size=2175, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Stockholm", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Sofia", {st_mode=S_IFREG|0644, st_size=2104, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Skopje", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Simferopol", {st_mode=S_IFREG|0644, st_size=2113, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Sarajevo", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/San_Marino", {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Samara", {st_mode=S_IFREG|0644, st_size=2078, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Rome", {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Riga", {st_mode=S_IFREG|0644, st_size=2209, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Prague", {st_mode=S_IFREG|0644, st_size=2246, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Podgorica", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Paris", {st_mode=S_IFREG|0644, st_size=2945, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Oslo", {st_mode=S_IFREG|0644, st_size=2225, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Nicosia", {st_mode=S_IFREG|0644, st_size=2002, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Moscow", {st_mode=S_IFREG|0644, st_size=2194, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Monaco", {st_mode=S_IFREG|0644, st_size=2927, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Minsk", {st_mode=S_IFREG|0644, st_size=2067, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Mariehamn", {st_mode=S_IFREG|0644, st_size=1883, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Malta", {st_mode=S_IFREG|0644, st_size=2603, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Madrid", {st_mode=S_IFREG|0644, st_size=2593, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Luxembourg", {st_mode=S_IFREG|0644, st_size=2960, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/London", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Ljubljana", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Lisbon", {st_mode=S_IFREG|0644, st_size=3439, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Kiev", {st_mode=S_IFREG|0644, st_size=2057, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Kaliningrad", {st_mode=S_IFREG|0644, st_size=2233, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Jersey", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Istanbul", {st_mode=S_IFREG|0644, st_size=2721, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Isle_of_Man", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Helsinki", {st_mode=S_IFREG|0644, st_size=1883, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Guernsey", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Gibraltar", {st_mode=S_IFREG|0644, st_size=3035, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Dublin", {st_mode=S_IFREG|0644, st_size=3533, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Copenhagen", {st_mode=S_IFREG|0644, st_size=2134, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Chisinau", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Budapest", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Bucharest", {st_mode=S_IFREG|0644, st_size=2195, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Brussels", {st_mode=S_IFREG|0644, st_size=2944, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Bratislava", {st_mode=S_IFREG|0644, st_size=2246, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Berlin", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Belgrade", {st_mode=S_IFREG|0644, st_size=1931, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Belfast", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Athens", {st_mode=S_IFREG|0644, st_size=2245, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Andorra", {st_mode=S_IFREG|0644, st_size=1725, ...}) = 0
3718  stat("/usr/share/zoneinfo/Europe/Amsterdam", {st_mode=S_IFREG|0644, st_size=2917, ...}) = 0
3718  open("/usr/share/zoneinfo/Indian", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 13 entries */, 32768) = 392
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Indian/Reunion", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Mayotte", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Mauritius", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Maldives", {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Mahe", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Kerguelen", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Comoro", {st_mode=S_IFREG|0644, st_size=157, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Cocos", {st_mode=S_IFREG|0644, st_size=143, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Christmas", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Chagos", {st_mode=S_IFREG|0644, st_size=187, ...}) = 0
3718  stat("/usr/share/zoneinfo/Indian/Antananarivo", {st_mode=S_IFREG|0644, st_size=227, ...}) = 0
3718  open("/usr/share/zoneinfo/Mexico", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 5 entries */, 32768) = 144
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Mexico/General", {st_mode=S_IFREG|0644, st_size=1604, ...}) = 0
3718  stat("/usr/share/zoneinfo/Mexico/BajaSur", {st_mode=S_IFREG|0644, st_size=1534, ...}) = 0
3718  stat("/usr/share/zoneinfo/Mexico/BajaNorte", {st_mode=S_IFREG|0644, st_size=2342, ...}) = 0
3718  open("/usr/share/zoneinfo/Mideast", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 5 entries */, 32768) = 144
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Mideast/Riyadh89", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718  stat("/usr/share/zoneinfo/Mideast/Riyadh88", {st_mode=S_IFREG|0644, st_size=8523, ...}) = 0
3718  stat("/usr/share/zoneinfo/Mideast/Riyadh87", {st_mode=S_IFREG|0644, st_size=8669, ...}) = 0
3718  open("/usr/share/zoneinfo/Pacific", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 44 entries */, 32768) = 1336
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/Pacific/Yap", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Wallis", {st_mode=S_IFREG|0644, st_size=141, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Wake", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Truk", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Tongatapu", {st_mode=S_IFREG|0644, st_size=313, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Tarawa", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Tahiti", {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Samoa", {st_mode=S_IFREG|0644, st_size=290, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Saipan", {st_mode=S_IFREG|0644, st_size=229, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Rarotonga", {st_mode=S_IFREG|0644, st_size=548, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Port_Moresby", {st_mode=S_IFREG|0644, st_size=163, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Ponape", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Pohnpei", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Pitcairn", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Palau", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Pago_Pago", {st_mode=S_IFREG|0644, st_size=290, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Noumea", {st_mode=S_IFREG|0644, st_size=300, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Norfolk", {st_mode=S_IFREG|0644, st_size=182, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Niue", {st_mode=S_IFREG|0644, st_size=200, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Nauru", {st_mode=S_IFREG|0644, st_size=240, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Midway", {st_mode=S_IFREG|0644, st_size=268, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Marquesas", {st_mode=S_IFREG|0644, st_size=162, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Majuro", {st_mode=S_IFREG|0644, st_size=171, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Kwajalein", {st_mode=S_IFREG|0644, st_size=211, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Kosrae", {st_mode=S_IFREG|0644, st_size=188, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Kiritimati", {st_mode=S_IFREG|0644, st_size=204, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Johnston", {st_mode=S_IFREG|0644, st_size=119, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Honolulu", {st_mode=S_IFREG|0644, st_size=312, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Guam", {st_mode=S_IFREG|0644, st_size=199, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Guadalcanal", {st_mode=S_IFREG|0644, st_size=158, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Gambier", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Galapagos", {st_mode=S_IFREG|0644, st_size=197, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Funafuti", {st_mode=S_IFREG|0644, st_size=141, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Fiji", {st_mode=S_IFREG|0644, st_size=296, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Fakaofo", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Enderbury", {st_mode=S_IFREG|0644, st_size=204, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Efate", {st_mode=S_IFREG|0644, st_size=464, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Easter", {st_mode=S_IFREG|0644, st_size=8971, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Chuuk", {st_mode=S_IFREG|0644, st_size=144, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Chatham", {st_mode=S_IFREG|0644, st_size=2018, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Auckland", {st_mode=S_IFREG|0644, st_size=2434, ...}) = 0
3718  stat("/usr/share/zoneinfo/Pacific/Apia", {st_mode=S_IFREG|0644, st_size=268, ...}) = 0
3718  open("/usr/share/zoneinfo/SystemV", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 15 entries */, 32768) = 416
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/SystemV/YST9YDT", {st_mode=S_IFREG|0644, st_size=2358, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/YST9", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/PST8PDT", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/PST8", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/MST7MDT", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/MST7", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/HST10", {st_mode=S_IFREG|0644, st_size=312, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/EST5EDT", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/EST5", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/CST6CDT", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/CST6", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/AST4ADT", {st_mode=S_IFREG|0644, st_size=3424, ...}) = 0
3718  stat("/usr/share/zoneinfo/SystemV/AST4", {st_mode=S_IFREG|0644, st_size=229, ...}) = 0
3718  open("/usr/share/zoneinfo/US", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 11
3718  getdents(11, /* 15 entries */, 32768) = 472
3718  getdents(11, /* 0 entries */, 32768) = 0
3718  close(11)                         = 0
3718  stat("/usr/share/zoneinfo/US/Samoa", {st_mode=S_IFREG|0644, st_size=290, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Pacific-New", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Pacific", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Mountain", {st_mode=S_IFREG|0644, st_size=2427, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Michigan", {st_mode=S_IFREG|0644, st_size=2202, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Indiana-Starke", {st_mode=S_IFREG|0644, st_size=2395, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Hawaii", {st_mode=S_IFREG|0644, st_size=312, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Eastern", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/East-Indiana", {st_mode=S_IFREG|0644, st_size=1649, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Central", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Arizona", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Aleutian", {st_mode=S_IFREG|0644, st_size=2353, ...}) = 0
3718  stat("/usr/share/zoneinfo/US/Alaska", {st_mode=S_IFREG|0644, st_size=2358, ...}) = 0
3718  open("/usr/share/zoneinfo/zone.tab", O_RDONLY) = 11
3718  fstat(11, {st_mode=S_IFREG|0644, st_size=19419, ...}) = 0
3718  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6df42c7000
3718  read(11, "# <pre>\n# @(#)zone.tab\t8.38\n# Th"..., 4096) = 4096
3718  read(11, "l (MA, PI, CE, RN, PB)\nBR\t-0803-"..., 4096) = 4096
3718  read(11, "10-07950\tAmerica/Guayaquil\tmainl"..., 4096) = 4096
3718  read(11, "+2105-08646\tAmerica/Cancun\tCentr"..., 4096) = 4096
3718  read(11, "ica/Port_of_Spain\nTV\t-0831+17913"..., 4096) = 3035
3718  read(11, "", 4096)                = 0
3718  close(11)                         = 0
3718  munmap(0x7f6df42c7000, 4096)      = 0
3718  open("/usr/share/zoneinfo/Asia/Tokyo", O_RDONLY) = 11
3718  fstat(11, {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718  mmap(NULL, 331, PROT_READ, MAP_SHARED, 11, 0) = 0x7f6df42c7000
3718  close(11)                         = 0
3718  munmap(0x7f6df42c7000, 331)       = 0
3718  stat("/usr/share/zoneinfo/Asia/Tokyo", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
3718  chdir("/")                        = 0
3718  umask(022)                        = 022
3718  munmap(0x7f6df4198000, 528384)    = 0
3718  write(10, "\1\0\0\0\1", 5)        = 5
3718  shutdown(10, 2 /* send and receive */) = 0
catch’s picture

Docs for date_default_timezone_get() show where the syscalls come from:

http://php.net/manual/en/function.date-default-timezone-get.php

Reading the timezone set using the date_default_timezone_set() function (if any)

Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0)

Reading the value of the date.timezone ini option (if set)

Querying the host operating system (if supported and allowed by the OS)

And here's why we're hitting that:


/**
 * Return the time zone of the current user.
 */
function drupal_get_user_timezone() {
  global $user;
  if (variable_get('configurable_timezones', 1) && $user->uid && $user->timezone) {
    return $user->timezone;
  }
  else {
    // Ignore PHP strict notice if time zone has not yet been set in the php.ini
    // configuration.
    return variable_get('date_default_timezone', @date_default_timezone_get());
  }
}

So to fix the E_STRICT warning, we're using @, nice!

catch’s picture

So suggestions to fix this:

1. We should not call date_default_timezone_get() until after variable_init() - so that we can load from the database instead of falling back to syscalls.

2. There is absolutely no need for every single request to Drupal 7 that hasn't hardcoded this variable in settings.php to check the operating system timezone. Did it change yet? Did it change again? What about now? Still UTC is it?

3. We should set that variable on install, and add an update. If you move your site to a different server in a different timezone then you might possible find this doesn't get updated, but people will be less likely to move their sites to different servers if we don't completely hobble performance :( Could look at a nested variable_get() for something we can update automatically in drupal_flush_all_caches() - then we could pick up timezone changes ourselves but still allow sites to set it permanently.

4. We still might not want to do any of this in the default page caching workflow, but it looks like the _get() calls that are killing us more than the _set().

Anonymous’s picture

subscribe.

droplet’s picture

subscribe

Crell’s picture

Subscribing. Also, that @ is a critical bug in itself. We should never be dealing with errors like that, especially strict errors. That is guaranteed to bite us sooner or later, exactly like this.

Catch, if I understand you correctly (and I may not as I've not studied all of our new date code in detail), the issue is that we're asking for a timezone without setting one, which is forcing PHP to take the longest possible route to derive a timezone to return. So instead we should not do that (duh) and always set a timezone.

That seems like a no-brainer to me, especially since modern PHP versions yell at you if you don't do that. If that's the case, then I'm frankly shocked that we're not already always setting a timezone based on the user-defined site timezone.

chx’s picture

Meh. If this is so slow , it's hardly our task to fix this, it should be set in php.ini IMO. Also, I have told numerous times that while I agree with notice free, going strict free is a waste of time and effort.

catch’s picture

@Crell: yes that's right.

@chx: I just checked php.ini on two production servers with different linux distributions and neither had date.timezone set, so I don't think we can add a requirement for it.

Spoke to chx in irc about this. He thinks we should write this into settings.php - which I think is a good idea, but is going to be tricky for head-head updates since we'd have to tell people to make settings.php writable.

However if we go for my plan of setting the variable in the db, we'll still run into issues in the if-modified-since/strtotime() case if that's called without a variable_initialize() first (although that's more of an edge case at this point).

Heine’s picture

I do have date.timezone set.

For my system (Windows 7, MySQL via 127.0.0.1) the largest discrepancy comes form the time it takes to open a db connection.

In d6 this takes about 10% of the cached page request time (of 19 ms), in d7 it takes a whopping 35% (of 37 ms).

Note, this is seperate from the IPv6 issue many people run it to. I'm specifically using an ipv4-address. Using localhost takes > 1 second to wait on the first timeout.

Heine’s picture

With a PHP.ini set timezone drupal_get_user_timezone only takes about 100 microseconds. The PHP team upgraded the warning from E_STRICT to E_WARNING in PHP 5.3.0.

Why suppress it?

jherencia’s picture

Sub.

Damien Tournoud’s picture

Priority: Critical » Major

The PHP team definitely considers it is a bug not to have a date.timezone set.

So, in _drupal_bootstrap_page_cache() we are *generally* after DRUPAL_BOOTSTRAP_VARIABLES (as long as page_cache_without_database is off). In that case it is legitimate to load the timezone from the database. So we can simply do something like this:

$timezone = variable_get('date_default_timezone');
if (!isset($timezone)) {
  $timezone = @date_default_timezone_get();
}

That said, it strikes me as weird that we are relying on the default timezone here (that should already be set... date_default_timezone_set(date_default_timezone_get()) should be a noop :)). So I would like this to become just 'UTC'.

ogi’s picture

subscribe

MustangGB’s picture

Subscribe

Berdir’s picture

I was thinking the same as Damien in #12.

The problem is that we are always calling date_default_timezone_get() for the default value, even if it is hardcoded in settings.php. so that really needs to be improved.

@Heine:
I think the connect is using the socket for me and you are going through the IP. That is probably quite a bit slower. Will try to do a test on a clean install (I have tons of contrib modules enabled on the one I did the test) and using 127.0.0.1 instead of localhost as the database host. Another resource I just found mentiones reverse-lookup on the mysql side: http://allurcode.com/2010/04/07/mysql-very-slow-without-a-reason/

catch’s picture

Status: Active » Needs review
FileSize
822 bytes

I added date.timezone = Asia/Tokyo and it didn't make any difference to the strace.

Then in drupal_get_user_timezone() I harded coded return 'Asia/Tokyo'; at the top, and that didn't make any difference either.

Only commenting out the date_default_timezone_set() line altogether stopped them.

That may me wonder if date_default_timezone_set() is the problem instead of date_default_timezone_get().

So I looked at PHP source code.

date_default_timezone_set() calls timelib_timezone_id_is_valid()

This calls seek_to_tz_position(&tzf, timezone, tzdb)) - which looks like it could be responsible.

However even with this commented out, I don't see a massive improvement, although the strace is much nicer.

So...

Profiled again, and there are apparently five calls to cache_get() to serve the page, and cache_get() is using db_select().

I reverted #344088: cache.inc cannot be fully converted to dbtng (although apparently that actual patch never went in) and I can now get between 180-220 requests per second, instead of 120-140. Attached a patch for that alongside webgrind screenshots.

Not sure why this didn't show up earlier, since that's not a new change, but maybe dbtng internals changed (autoloader?) and it's become a problem recently.

Either way that's a big chunk of the regression, patch will need a very long code comment to explain why we're doing it like this, but I don't think it's worth losing 50 requests per second for this.

Also need to identify just why we're doing 5 cache_get() here as well, that could also be the source of the regression.

catch’s picture

FileSize
1.33 KB

OK here's part two:

We've been fetching cache_get('bootstrap_modules', 'cache_bootstrap'); three times instead of once.

system_list() wasn't checking the static cache for bootstrap modules when called with 'bootstrap' argument, I had a root around in git blame and it's been that way since it went in, which suggests it was relying on module_list() to cache properly.

However module_list() doesn't static cache bootstrap modules either.

So, if we change this as well, we're safely over 200 requests per second (range is around 200-240).

This is still about 10% slower than Drupal 6, but getting closer.

catch’s picture

Opened #1064882: Remove syscalls from calling date_default_timezone_set(), date_default_timezone_get() so we can tackle that separately. It's ugly but it's not actually that big of a performance hit at least compared to the cache_get() stuff.

Heine’s picture

With the patch in #17 and my issue in #1064342: Page caching performance II - PDO connection takes a long time worked around I have D7 serving more pages / s from cache then D6. (480 vs. 460, so in the same league).

Berdir’s picture

Ok, trying the patch...

Without patch:

$ ab -n 1000 -c 1 http://d7i/
[...]
Requests per second:    153.02 [#/sec] (mean)
Time per request:       6.535 [ms] (mean)
Time per request:       6.535 [ms] (mean, across all concurrent requests)
[...]

With patch:

$ ab -n 1000 -c 1 http://d7i/
[...]
Requests per second:    188.99 [#/sec] (mean)
Time per request:       5.291 [ms] (mean)
Time per request:       5.291 [ms] (mean, across all concurrent requests)
[...]
Requests per second:    197.63 [#/sec] (mean)
Time per request:       5.060 [ms] (mean)
Time per request:       5.060 [ms] (mean, across all concurrent requests)
[...]
Requests per second:    185.27 [#/sec] (mean)
Time per request:       5.398 [ms] (mean)
Time per request:       5.398 [ms] (mean, across all concurrent requests)

Certainly *a lot* faster. I don't quite see the same improvement as catch though.

sun’s picture

Status: Needs review » Needs work
+++ includes/cache.inc
@@ -325,10 +325,7 @@ class DrupalDatabaseCache implements DrupalCacheInterface {
       // Garbage collection necessary when enforcing a minimum cache lifetime.
       $this->garbageCollection($this->bin);

Garbage collection uses db_delete(), should that also be changed into db_query() then?

+++ includes/cache.inc
@@ -325,10 +325,7 @@ class DrupalDatabaseCache implements DrupalCacheInterface {
+      $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . $this->bin . '} WHERE cid IN (:cids)', array(':cids' => $cids));

Might be worth to add a minimal comment to prevent someone from breaking this again in the future.

Powered by Dreditor.

catch’s picture

Here's a re-roll adding that comment.

I also compared Drupal 7 with and without the patch with page caching disabled. The system_list()/module_list() bug doesn't appear to occur when page caching is off, this is because hook_exit() is called as module_invoke_all('exit') which doesn't use the bootstrap list - that might explain why the duplicate queries went un-noticed as well.

However there are 16 calls to cache_get() with the minimal profile, and we swap those db_select() for db_query() with the patch applied. Here's the numbers to compare - note that wall time is very variable between requests so don't get too excited, although I think I can see a small measurable improvement when benchmarking too.

HEAD:
Total Incl. Wall Time (microsec): 46,068 microsecs
Total Incl. CPU (microsecs): 40,000 microsecs
Total Incl. MemUse (bytes): 4,869,176 bytes
Total Incl. PeakMemUse (bytes): 5,060,552 bytes
Number of Function Calls: 5,636

Patch:
Total Incl. Wall Time (microsec): 40,380 microsecs
Total Incl. CPU (microsecs): 40,000 microsecs
Total Incl. MemUse (bytes): 4,999,928 bytes
Total Incl. PeakMemUse (bytes): 5,187,336 bytes
Number of Function Calls: 4,439

I don't know why the memory usage goes up with the patch, maybe there's a memory leak in db_query() compared to SelectQuery->execute()? Even xhprof didn't have many clues - inclusive memory usage for cache_get() went down from 1,144,152 to 756,976 but other functions were higher.

Out of interest, here's benchmarks with APC disabled on the 7-minimal install with and without the patch. This should benefit from not loading select.inc and query.inc (although it'd be good to benchmark only with and without the db autoloader to see what difference it makes only including those files - that was something Rasmus didn't like last Drupalcon, different issue though).

HEAD:


Requests per second:    51.00 [#/sec] (mean)
Time per request:       19.610 [ms] (mean)
Time per request:       19.610 [ms] (mean, across all concurrent requests)
Transfer rate:          313.79 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    15   20   2.5     19      34
Waiting:       15   19   2.5     19      34
Total:         15   20   2.5     19      34
Requests per second:    60.03 [#/sec] (mean)
Time per request:       16.659 [ms] (mean)
Time per request:       16.659 [ms] (mean, across all concurrent requests)
Transfer rate:          369.37 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    12   17   3.3     16      30
Waiting:       12   16   3.3     16      30
Total:         12   17   3.3     16      30

That only closes the 30 request/second gap compared to Drupal 6 by 10 requests/second, so some things still going on here.

catch’s picture

FileSize
1.85 KB

This time with the patch.

catch’s picture

Status: Needs work » Needs review

And status change, sorry.

Wim Leers’s picture

Subscribing.

Jeremy’s picture

subscribing

Dries’s picture

It sounds like the documentation of db_select() needs to be updated to educate people about when to use db_select() vs db_query(). I expect that most people will naturally use db_select() over db_query() while they should be using db_query(). I think this part of the database API might be a bit 'misleading' for those who don't read the fine-print.

In chat, Crell suggested that it may be useful to benchmark different queries in db_query vs db_select, without other stuff around them, to get a sense for how big a difference it is.

Dries’s picture

Issue tags: +Favorite-of-Dries

This is an important patch so I'm tracking it.

Berdir’s picture

There is an issue for that (TM): #835068: Document usage of static vs dynamic queries. I guess the suggested case there needs to be updated with something like "If the query needs to be very fast (eg cache loading), use db_query() also for dynamic queries".

About general performance with db_select/db_query., there are two things:

- Everything that db_select() does is on top of db_query (DatabaseConnection::query() actually). There are multiple classes involved, a lot of string mangling and many many method calls. So it is obviously a lot slower. Some tests might be interesting, I'll see if I can write someting.

- Additionally in this case, it is about using or not using db_select() at all during the whole request. And this means loading includes/databases/select.inc, including includes/database/driver/select.inc if it exists, checking if there is a SelectQuery_driver class and initiate it.

Dries’s picture

The second bullet of #30 might be worth including in the code comment? Having the rationale makes it easier to understand.

Eric_A’s picture

Part of the performance regression was introduced in #978144: cache_get_multiple() inconsistent with cache_get().

catch’s picture

I'd prefer it if we open a new issue to discuss the db autoload stuff and benchmark whether the autoload itself is adding overhead compared to just including the files. I took lock.inc out during benchmarks and only saw about 0.5% improvement even without APC, so would rather not write any assumptions into a code comment except for the general one that db_select() is a lot slower.

Eric_A, thanks for finding the commit. This is why we desperately need automated performance testing of core - any potential performance implication of that patch was dismissed in one comment and never looked at again. At least it's only been in for three months though, I'd been thinking I'd missed this last time I checked page caching about 14 months ago.

Dries’s picture

Status: Needs review » Reviewed & tested by the community

Re @catch in #33: OK, I think that is reasonable. Given #978144: cache_get_multiple() inconsistent with cache_get() this fix seems RTBC.

There is only a tiny difference. Original:

-      $cache = db_query("SELECT data, created, expire, serialized FROM {" . $this->bin . "} WHERE cid = :cid", array(':cid' => $cid))->fetchObject();

New:

+      $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . $this->bin . '} WHERE cid IN (:cids)', array(':cids' => $cids));

But that looks OK.

catch’s picture

That's changed to keep this consistent with cache_get_multiple, which is how this regression got in in the first place.

catch’s picture

Opened #1066752: Page caching performance has regressed by up to 20% with no opcode cache since we're not quite done yet for opcode cache-less hosts.

Crell’s picture

My only note is that table names in static queries are not escaped, so I'm not sure if that's a possible SQL injection vector. Presumably you'd never use user-supplied variables for the cache bin name, but if you did and didn't sanitize it first then that would be a possible attack vector. We may want to document that in the docblock.

Other than that, I support this patch.

podarok’s picture

subscribe

moshe weitzman’s picture

This is a good patch. IMO we should db_quote($table_name) just in case.

Still, we have a problem when we are afraid to use our own APIs. We added a nice db_select() but we can only use it for performance insensitive pages/queries. Thats a drupal WTF, IMO. Reminds me of drupal_static() and drupal_static_fast

catch’s picture

Status: Reviewed & tested by the community » Needs review

@moshe - do you mean db_escape_table()? If so that sounds like a good idea to me, we should benchmark it but I'll be extremely disappointed if that's at all noticeable. That would save adding the comment Crell suggests in #37. Putting this back to CNR since I agree we need to account for this one way or another.

Also on db_select() and drupal_static(). I think the difference is db_select() is really nice, but drupal_static() is a WTF in itself - we shouldn't have added something just to support the testing framework in the first place, and without a clear idea of how we wanted to use it. #581626: Use a consistent/clean pattern for using $reset or drupal_static() is still open. I opened #1067802: Compare $connection->query() and $connection->select() performance to start work on the db_select() vs. db_query() comparison.

catch’s picture

FileSize
1.87 KB

Added db_escape_table(). ab is erroring out on my localhost so hoping someone else can do benchmarks.

Dries’s picture

Patch looks good but could use a final benchmark run.

catch’s picture

Here we go - different system to most of the benchmarks above:

HEAD: 108.56 #/sec
Patch from #24: 135.53 [#/sec]
Patch from #41: Requests per second: 138.67 [#/sec] (mean)

#41 should not be any faster, so that means there's no obvious regression at least.

And all escapeTable() does is this, in a class that's already been instantiated, so I think we're fine.

  public function escapeTable($table) {
    return preg_replace('/[^A-Za-z0-9_.]+/', '', $table);
  }
podarok’s picture

production site
ab -c5 -n500
w/o patch

Finished 500 requests


Server Software:
Server Hostname:        xxx.com
Server Port:            80

Document Path:          /
Document Length:        29265 bytes

Concurrency Level:      5
Time taken for tests:   6.202 seconds
Complete requests:      500
Failed requests:        0
Write errors:           0
Total transferred:      14838500 bytes
HTML transferred:       14632500 bytes
Requests per second:    80.62 [#/sec] (mean)
Time per request:       62.023 [ms] (mean)
Time per request:       12.405 [ms] (mean, across all concurrent requests)
Transfer rate:          2336.34 [Kbytes/sec] received

w #41 patch

Finished 500 requests


Server Software:
Server Hostname:        xxx.com
Server Port:            80

Document Path:          /
Document Length:        29265 bytes

Concurrency Level:      5
Time taken for tests:   5.326 seconds
Complete requests:      500
Failed requests:        0
Write errors:           0
Total transferred:      14838500 bytes
HTML transferred:       14632500 bytes
Requests per second:    93.87 [#/sec] (mean)
Time per request:       53.265 [ms] (mean)
Time per request:       10.653 [ms] (mean, across all concurrent requests)
Transfer rate:          2720.50 [Kbytes/sec] received

16.4 % speed-up
NICE!!!

ns2# drush pm-list | grep Enabled

Administration     Actions permissions (actions_permissions)                    Module  Enabled
 CCK                Field Permissions (field_permissions)                        Module  Enabled        7.x-1.x-dev
 Chaos tool suite   Bulk Export (bulk_export)                                    Module  Enabled        7.x-1.0-alpha2
 Chaos tool suite   Chaos tools (ctools)                                         Module  Enabled        7.x-1.0-alpha2
 Chaos tool suite   Page manager (page_manager)                                  Module  Enabled        7.x-1.0-alpha2
 Chaos tool suite   Views content panes (views_content)                          Module  Enabled        7.x-1.0-alpha2
 Content authoring  BUEditor (bueditor)                                          Module  Enabled
 Core               Block (block)                                                Module  Enabled        7.0
 Core               Book (book)                                                  Module  Enabled        7.0
 Core               Comment (comment)                                            Module  Enabled        7.0
 Core               Contact (contact)                                            Module  Enabled        7.0
 Core               Contextual links (contextual)                                Module  Enabled        7.0
 Core               Field (field)                                                Module  Enabled        7.0
 Core               Field SQL storage (field_sql_storage)                        Module  Enabled        7.0
 Core               Field UI (field_ui)                                          Module  Enabled        7.0
 Core               File (file)                                                  Module  Enabled        7.0
 Core               Filter (filter)                                              Module  Enabled        7.0
 Core               Image (image)                                                Module  Enabled        7.0
 Core               List (list)                                                  Module  Enabled        7.0
 Core               Locale (locale)                                              Module  Enabled        7.0
 Core               Menu (menu)                                                  Module  Enabled        7.0
 Core               Node (node)                                                  Module  Enabled        7.0
 Core               Number (number)                                              Module  Enabled        7.0
 Core               Options (options)                                            Module  Enabled        7.0
 Core               Path (path)                                                  Module  Enabled        7.0
 Core               PHP filter (php)                                             Module  Enabled        7.0
 Core               RDF (rdf)                                                    Module  Enabled        7.0
 Core               Search (search)                                              Module  Enabled        7.0
 Core               Shortcut (shortcut)                                          Module  Enabled        7.0
 Core               System (system)                                              Module  Enabled        7.0
 Core               Taxonomy (taxonomy)                                          Module  Enabled        7.0
 Core               Text (text)                                                  Module  Enabled        7.0
 Core               Toolbar (toolbar)                                            Module  Enabled        7.0
 Core               Trigger (trigger)                                            Module  Enabled        7.0
 Core               Update manager (update)                                      Module  Enabled        7.0
 Core               User (user)                                                  Module  Enabled        7.0
 Development        Coder (coder)                                                Module  Enabled        7.x-1.0-beta6
 Development        Grammar Parser (grammar_parser)                              Module  Enabled        7.x-1.1
 Features           Features (features)                                          Module  Enabled        7.x-1.0-beta1
 Feeds              Feeds (feeds)                                                Module  Enabled        7.x-2.0-alpha3
 Fields             Meta field (metatags_quick)                                  Module  Enabled        7.x-1.0-beta4
 Multilanguage      Locale updater (l10n_update)                                 Module  Enabled
 Multilanguage      Localization client (l10n_client)                            Module  Enabled
 Multilanguage      Translation template extractor (potx)                        Module  Enabled        7.x-1.0
 Other              AddToAny (addtoany)                                          Module  Enabled        7.x-1.0-beta1
 Other              Advanced help (advanced_help)                                Module  Enabled        7.x-1.x-dev
 Other              Entity CRUD API (entity)                                     Module  Enabled
 Other              Entity Metadata (entity_metadata)                            Module  Enabled
 Other              Gravatar (gravatar)                                          Module  Enabled        7.x-1.1
 Other              Job Scheduler (job_scheduler)                                Module  Enabled        7.x-2.0-alpha2
 Other              Libraries (libraries)                                        Module  Enabled        7.x-1.x-dev
 Other              Pathauto (pathauto)                                          Module  Enabled        7.x-1.0-beta1
 Other              Token (token)                                                Module  Enabled        7.x-1.0-beta1
 Other              Transliteration (transliteration)                            Module  Enabled        7.x-3.0-alpha1
 Rules              Rules (rules)                                                Module  Enabled
 Rules              Rules Scheduler (rules_scheduler)                            Module  Enabled
 Spam control       CAPTCHA (captcha)                                            Module  Enabled        7.x-1.0-alpha2
 Spam control       Image CAPTCHA (image_captcha)                                Module  Enabled        7.x-1.0-alpha2
 Views              Views (views)                                                Module  Enabled        7.x-3.0-alpha1
 Views              Views Bulk Operations (views_bulk_operations)                Module  Enabled
 Core               Garland (garland)                                            Theme   Enabled        7.0
 Core               Seven (seven)                                                Theme   Enabled        7.0
moshe weitzman’s picture

Status: Needs review » Reviewed & tested by the community

rtbc based on benchmarks

Dries’s picture

Status: Reviewed & tested by the community » Fixed

Committed to CVS HEAD. Thanks.

andypost’s picture

Priority: Major » Normal
Status: Fixed » Needs review
FileSize
716 bytes

By the same way we need to change isEmpty() - this query is not alterable.

db_select() should be used only for places where query could be altered. db_query() has docs about it.

andypost’s picture

Priority: Normal » Major

Actually this is Major follow-up because default cache implementation is involved in bootstrap so db_select() should not used at all!

Status: Needs review » Needs work

The last submitted patch, 1064212-cache-empty.patch, failed testing.

bfroehle’s picture

Status: Needs work » Needs review
FileSize
717 bytes
+++ includes/cache.inc	24 Feb 2011 19:19:32 -0000
@@ -499,11 +499,6 @@ class DrupalDatabaseCache implements Dru
+    return (bool) db_query_range('SELECT 1 FROM {' . db_escape_table($this->bin) . '}', 0, 1)->fetchField();

Missed a ! here. The test is "isEmpty()", not "isNotEmpty()".

Powered by Dreditor.

moshe weitzman’s picture

Now the db_select() witchhunt begins. Sigh.

catch’s picture

Priority: Major » Normal
Status: Needs review » Postponed (maintainer needs more info)

When do we actually use isEmpty()? It's definitely not on cached pages or I'd have noticed when working on the original patch.

catch’s picture

Priority: Normal » Major
Status: Postponed (maintainer needs more info) » Fixed

In fact no I'm doing this. Please open a new issue if you think this is important, explaining where isEmpty() is being used that the extra millisecond or so from db_select() is a problem. The fact we have to do db_escape_table() (afaik the only call to that in core now) for cache_get() means there is a perfectly valid reason to use db_select() - because the query is dynamic by virtue of having a variable table name.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.