GNU bug report logs - #59368
icecat does not honor /etc/timezone starting with 102.3.0.

Previous Next

Package: guix;

Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Date: Fri, 18 Nov 2022 19:51:02 UTC

Severity: normal

Merged with 55089

To reply to this bug, email your comments to 59368 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Fri, 18 Nov 2022 19:51:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Fri, 18 Nov 2022 19:51:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: bug-guix <bug-guix <at> gnu.org>
Subject: icecat does not honor /etc/timezone starting with 102.3.0.
Date: Fri, 18 Nov 2022 14:50:18 -0500
Hi,

I've recently found out that icecat wouldn't display time correctly for
my local time zone anymore (even when the 'resistFingerprinting' in
about:config is disabled, which would have usually resolved the
problem).

To test, I simply visit the https://everytimezone.com/, which shows your
current time.

This version from early September 2022 works:

--8<---------------cut here---------------start------------->8---
/gnu/store/bzpyas70s9j95dqad00vafks5icg51dm-icecat-91.13.0-guix0-preview1/bin/icecat
--8<---------------cut here---------------end--------------->8---

While this one from the end of September 2022 doesn't

--8<---------------cut here---------------start------------->8---
/gnu/store/bzpyas70s9j95dqad00vafks5icg51dm-icecat-91.13.0-guix0-preview1/bin/icecat
--8<---------------cut here---------------end--------------->8---


As a workaround, you can set your timezone explicitly (after ensuring
there are no longer running icecat processes) like so:

--8<---------------cut here---------------start------------->8---
TZ=America/Montreal icecat
--8<---------------cut here---------------end--------------->8---

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Mon, 13 Feb 2023 22:18:02 GMT) Full text and rfc822 format available.

Message #8 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 59368 <at> debbugs.gnu.org
Subject: Re: bug#59368: icecat does not honor /etc/timezone starting with
 102.3.0.
Date: Mon, 13 Feb 2023 17:17:34 -0500
Hi,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hi,
>
> I've recently found out that icecat wouldn't display time correctly for
> my local time zone anymore (even when the 'resistFingerprinting' in
> about:config is disabled, which would have usually resolved the
> problem).
>
> To test, I simply visit the https://everytimezone.com/, which shows your
> current time.
>
> This version from early September 2022 works:
>
> /gnu/store/bzpyas70s9j95dqad00vafks5icg51dm-icecat-91.13.0-guix0-preview1/bin/icecat
>
>
> While this one from the end of September 2022 doesn't
>
> /gnu/store/bzpyas70s9j95dqad00vafks5icg51dm-icecat-91.13.0-guix0-preview1/bin/icecat
>

The above problematic file name should have been that of icecat 102.3.0:

--8<---------------cut here---------------start------------->8---
/gnu/store/4gph2kbnmy64ii0fs9msig2jzjsnxdxi-icecat-102.3.0-guix0-preview1
--8<---------------cut here---------------end--------------->8---

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Tue, 14 Feb 2023 02:14:01 GMT) Full text and rfc822 format available.

Message #11 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 59368 <at> debbugs.gnu.org
Subject: Re: bug#59368: icecat does not honor /etc/timezone starting with
 102.3.0.
Date: Mon, 13 Feb 2023 21:13:50 -0500
Hi,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hi,
>
> Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:
>
>> Hi,
>>
>> I've recently found out that icecat wouldn't display time correctly for
>> my local time zone anymore (even when the 'resistFingerprinting' in
>> about:config is disabled, which would have usually resolved the
>> problem).
>>
>> To test, I simply visit the https://everytimezone.com/, which shows your
>> current time.
>>
>> This version from early September 2022 works:
>>
>> /gnu/store/bzpyas70s9j95dqad00vafks5icg51dm-icecat-91.13.0-guix0-preview1/bin/icecat
>>
>>
>> While this one from the end of September 2022 doesn't
>>
>> /gnu/store/bzpyas70s9j95dqad00vafks5icg51dm-icecat-91.13.0-guix0-preview1/bin/icecat
>>
>
> The above problematic file name should have been that of icecat 102.3.0:
>
> /gnu/store/4gph2kbnmy64ii0fs9msig2jzjsnxdxi-icecat-102.3.0-guix0-preview1

Looking through IRC logs, Tobias had shared the following insight about
the problem:

--8<---------------cut here---------------start------------->8---
2022-11-14 16:15:25	nckx	podiki[m], apteryx: IceCat assumes that
/etc/localtime is a symlink to <zoneinfo>/share/zoneinfo/Your/TZ, and
bugs out if it isn't.  Some GNOME software is similarly broken.
--8<---------------cut here---------------end--------------->8---

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Tue, 14 Feb 2023 05:01:02 GMT) Full text and rfc822 format available.

Message #14 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 59368 <at> debbugs.gnu.org
Subject: Re: bug#59368: icecat does not honor /etc/timezone starting with
 102.3.0.
Date: Tue, 14 Feb 2023 00:00:25 -0500
Hi,

Pushing the investigation a bit, the Mozilla suite makes use of ICU to
get to know the host timezone name, and reviewing its source, I confirm
the behavior experienced.  The ICU-provided
'TimeZone::detectHostTimeZone' procedure calls to 'uprv_tzname' which
first attempts to read the TZ environment variable, else expects
/etc/localtime to be a symlink.

I found another explanation for the rationale behind the /etc/localtime
being a symlink design choice [0]:

   On many systems /etc/localtime is a symlink to a timezone file. It is
   conceivable that a program might be running when the /etc/localtime
   symlink is updated. If this were to happen, glibc would notice this
   when localtime is called and re-read the file before doing any time
   conversions.

[0]  https://blog.packagecloud.io/set-environment-variable-save-thousands-of-system-calls/

This article is worth reading and further demonstrates that simply
setting the TZ environment variable can lead to a large reduction of
system calls (from 11 to 1 for a every 'time' C library call).

So the choice to make here for Guix would be:

1. Do as most other distributions and have /etc/localtime be a symlink
pointing to the timezone file.

OR

2. Set TZ and reap some performance benefits.

The disadvantage of going with 2. is that users would then require to
restart their system following a reconfiguration changing their time
zone, which is not user friendly.

So I think I'd go with 2, knowing that savvy users wanting to shave some
extra resources can always set the TZ environment variable themselves.

Thoughts?

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Tue, 14 Feb 2023 16:33:02 GMT) Full text and rfc822 format available.

Message #17 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 59368 <at> debbugs.gnu.org
Subject: Re: bug#59368: icecat does not honor /etc/timezone starting with
 102.3.0.
Date: Tue, 14 Feb 2023 11:32:32 -0500
Hi,

The commit that updated icecat from version 91.13.0 to 102.3.0 is
4e88a7bfcb70f25219d9f2887121ae196431a115.  One of the changes listed is
an update from icu4c (which is/was at version 69.1) to icu4c-71 (71.1).
ICU seems to deal with reading /etc/localtime and /etc/timezone, so
perhaps its behavior changed.

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Tue, 14 Feb 2023 16:35:01 GMT) Full text and rfc822 format available.

Message #20 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 59368 <at> debbugs.gnu.org
Cc: Tobias Geerinckx-Rice <me <at> tobias.gr>
Subject: Re: bug#59368: icecat does not honor /etc/timezone starting with
 102.3.0.
Date: Tue, 14 Feb 2023 11:34:42 -0500
Hello,

I've logged a feature request with ICU upstream at
https://unicode-org.atlassian.net/browse/ICU-22278.

In the meantime, we can apply a patch to our icu4c <at> 71 on master or icu4c
on core-updates to substitute the zoneinfo file name in

--8<---------------cut here---------------start------------->8---
"#define TZZONEINFO      "/usr/share/zoneinfo/""
--8<---------------cut here---------------end--------------->8---

from the putil.cpp file of ICU.

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Wed, 15 Feb 2023 02:47:02 GMT) Full text and rfc822 format available.

Message #23 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 59368 <at> debbugs.gnu.org
Cc: Tobias Geerinckx-Rice <me <at> tobias.gr>
Subject: Re: bug#59368: icecat does not honor /etc/timezone starting with
 102.3.0.
Date: Tue, 14 Feb 2023 21:45:48 -0500
Hi,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hello,
>
> I've logged a feature request with ICU upstream at
> https://unicode-org.atlassian.net/browse/ICU-22278.
>
> In the meantime, we can apply a patch to our icu4c <at> 71 on master or icu4c
> on core-updates to substitute the zoneinfo file name in
>
> "#define TZZONEINFO      "/usr/share/zoneinfo/""
>
> from the putil.cpp file of ICU.

It seems this was a red herring; patching this reference doesn't help.
I've made the following minimal reproducer to convince myself that ICU
worked in isolation:

--8<---------------cut here---------------start------------->8---
#include <stdio.h>
#include <stdlib.h>

#include <unicode/ucal.h>
#include <unicode/ustring.h>

int main() {
    UChar result[100]; /* char16_t array */
    UErrorCode errorCode = U_ZERO_ERROR;
    char timezone[200];

    ucal_getHostTimeZone(result, 100, &errorCode);

    if (!u_austrncpy(timezone, result, 100)) {
        printf("error: failed to convert UChar array to byte string\n");
        exit(1);
    }

    printf("host timezone: %s\n", timezone);
}
--8<---------------cut here---------------end--------------->8---

Building and running it yields:

--8<---------------cut here---------------start------------->8---
$ make icu-repro && ./icu-repro 
gcc -I ./install/include -L ./install/lib -licudata -licuuc -licui18n \
  -g3 -O0 icu-repro.c -o icu-repro
host timezone: US/Eastern
--8<---------------cut here---------------end--------------->8---

Which is correct for my America/Montreal defined timezone.

To be continued...

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Wed, 15 Feb 2023 19:01:02 GMT) Full text and rfc822 format available.

Message #26 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Jonathan Brielmaier <jonathan.brielmaier <at> web.de>
To: 59368 <at> debbugs.gnu.org
Subject: icecat does not honor /etc/timezone starting with 102.3.0.
Date: Wed, 15 Feb 2023 20:00:23 +0100
Yes, its the wrong timezone: UTC instead of CEST with Icecat.
This resistFingerprinting doesn't seem to change something in that regard.

I can further say that I don't see this issue with firefox-esr or icedove.




Information forwarded to bug-guix <at> gnu.org:
bug#59368; Package guix. (Wed, 15 Feb 2023 19:51:01 GMT) Full text and rfc822 format available.

Message #29 received at 59368 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Jonathan Brielmaier <jonathan.brielmaier <at> web.de>
Cc: 59368 <at> debbugs.gnu.org
Subject: Re: bug#59368: icecat does not honor /etc/timezone starting with
 102.3.0.
Date: Wed, 15 Feb 2023 14:50:28 -0500
Hi Jonathan,

Jonathan Brielmaier <jonathan.brielmaier <at> web.de> writes:

> Yes, its the wrong timezone: UTC instead of CEST with Icecat.
> This resistFingerprinting doesn't seem to change something in that regard.
>
> I can further say that I don't see this issue with firefox-esr or icedove.

Thanks for confirming the issue.  I investigated with a vanilla Firefox
build and reported my findings upstream [0].  The bug is triggered when
the default value for privacy.resistFingerprinting is set to 'true', as
done by the makeicecat script.

[0]  https://bugzilla.mozilla.org/show_bug.cgi?id=1817004

-- 
Thanks,
Maxim




Merged 55089 59368. Request was from Maxim Cournoyer <maxim.cournoyer <at> gmail.com> to control <at> debbugs.gnu.org. (Wed, 19 Jul 2023 18:19:03 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 328 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.