From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/9798 Path: news.gmane.org!not-for-mail From: Hannu Nyman Newsgroups: gmane.linux.lib.musl.general Subject: Re: Bug in timezone handling (new zonename format like '<+04>-4' ) Date: Thu, 31 Mar 2016 19:47:16 +0300 Message-ID: <699b8fe9-4693-8f71-c321-452c765f26a3@iki.fi> References: <7d2a2332-05ee-6f5e-7ed9-26bf7b8e1aae@iki.fi> <20160331160647.GV21636@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1459442863 30742 80.91.229.3 (31 Mar 2016 16:47:43 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 31 Mar 2016 16:47:43 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-9811-gllmg-musl=m.gmane.org@lists.openwall.com Thu Mar 31 18:47:34 2016 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1alfkr-0001PS-1r for gllmg-musl@m.gmane.org; Thu, 31 Mar 2016 18:47:33 +0200 Original-Received: (qmail 28444 invoked by uid 550); 31 Mar 2016 16:47:31 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 28411 invoked from network); 31 Mar 2016 16:47:30 -0000 X-Virus-Scanned: Debian amavisd-new at pp.htv.fi User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Thunderbird/47.0a2 In-Reply-To: <20160331160647.GV21636@brightrain.aerifal.cx> Xref: news.gmane.org gmane.linux.lib.musl.general:9798 Archived-At: On 31.3.2016 19:06, Rich Felker wrote: > On Thu, Mar 31, 2016 at 06:50:14PM +0300, Hannu Nyman wrote: >> The IANA timezone zoneinfo maintainers have decided to introduce new >> timezones in a simplified format with 2016b zoneinfo. >> No more invented name strings, but just the time offset inside <...> >> This seems to break musl. >> >> http://mm.icann.org/pipermail/tz-announce/2016-March/000036.html >> New zones Europe/Astrakhan and Europe/Ulyanovsk ... Asia/Barnaul ... >> As a trial of a new system that needs less information to be >> made up, the new zones use numeric time zone abbreviations like >> "+04" instead of invented abbreviations like "ASTT". >> >> I have tested with Openwrt trunk using musl (with Linux kernel 4.1) >> and older uClibc-based Openwrt CC15.05.1. >> The uClibc-based system uses the new zones ok, but the musl-based >> build behaves badly, as it defaults to GMT and shows the zonename as >> '+04>-4'. (This is when full zoneinfo files are not installed and >> just the TZ variable is used.) >> >> Examples at https://github.com/openwrt/luci/issues/675 >> >> (note: Openwrt patches musl to store TZ in /etc/TZ instead of an env >> variable, but that should have no impact in the displayed timezone.) >> >> ... >> >> "new zone" is handle wrongly: >> Europe/Astrakhan >> root@OpenWrt:~# cat /etc/TZ >> <+04>-4 >> root@OpenWrt:~# uptime >> 08:02:52 up 18:19, load average: 0.17, 0.18, 0.13 >> root@OpenWrt:~# date >> Wed Mar 30 08:02:59 +04>-4 2016 >> (That should be Helsinki+1 (= +2 -DST) = 12:02:59) > I thought this was some nonstandard extension conflicting with > standard handling of the TZ variable, but in fact it's documented in > current POSIX as a quoted form: > > http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 > > Does the specification there agree with your expectations of how it > should behave? Do you have any other references I could look at on how > this is supposed to be used? > > Rich As far as I can see, the new timezones are according to the POSIX specs: just the "quoted std + offset" And musl has some handling for the "quoted form", e.g. in the getname function: http://git.musl-libc.org/cgit/musl/tree/src/time/__tz.c#n82 But apparently not all functions utilize that, or something else goes wrong. Sadly I can't offer you more examples. I just thought to highlight the issue after noticing it and determined it to be likely a musl issue. My use case is with Openwrt+musl, which in practice means busybox utils combined with musl. As the older Openwrt CC15.05.1 works ok (with busybox+uClibc), I think that this is musl-specific. I haven't checked from busybox sources how e.g. "uptime" gets exactly handled and which musl functions it calls. But almost the same busybox version behaves ok with uClibc but fails with musl. So far this issue only concerns three small timezones in Russia, but is all new zones get introduced this way, the issue may grow in importance.