[tz] localtime crash and fix

Alois Treindl alois at astro.ch
Fri Nov 24 15:29:50 UTC 2023


correction, the bug is also in RHEL 9 with gcc version 11.4.1

Just make all from fresh git clone, and run
./zdump -c 1880,2010 -v Europe/London Africa/Johannesburg


On 24.11.23 16:19, Alois Treindl via tz wrote:
>
> I can demonstrate the bug.
> Please try
>
> zdump -c 1880,2010 -v Europe/London Africa/Johannesburg
> in gdb debugger
>
> b tzload
>
> it stops 3 times.
> I let it run tzloadbody.
>
> Once it loaded Johannesburg, I look at structure st
>
> p *sp
> $1 = {leapcnt = 0, timecnt = 6, typecnt = 5, charcnt = 9, goback = 
> false, goahead = true, ...
>
> The goahead=true is incorrect.
>
> It should be goahead=false
>
> This happens only when I load several zones, i.e. Johannesburg after 
> London.
>
> None of the compile options like -std=c99 or -std=gnu11 fixes that 
> issue on my RHEL 7 compiler gcc version 4.8.5.
>
> I also tried compiler gcc version 9.3.1, same problem.
>
> When I compile on RHEL 9 with gcc version 11.4.1 the problem does not 
> appear.
> it gives goahead=false
>
> The patch memset(&ls, 0, sizeof(ls)); fixes the issue for gcc version 
> 4.8.5 and gcc version 9.3.1.
>
>
>
> On 23.11.23 19:32, Alois Treindl via tz wrote:
>>
>> I have observed occasional crashes in localtime.c in the current 
>> github version.
>>
>> In one of my applications, localtime() is called multiple times for 
>> several zones.
>>
>> The condition when the segmentation fault appears are herd to 
>> reproduce or demonstrate.
>>
>> This patch in function tzload() however solves the issue:
>>
>> --- localtime.c    2023-11-16 20:18:01.904577574 +0100
>> +++ a/localtime.c    2023-11-23 19:22:21.062249899 +0100
>> @@ -769,6 +769,7 @@
>>    }
>>  #else
>>    union local_storage ls;
>> +  memset(&ls, 0, sizeof(ls));
>>    return tzloadbody(name, sp, doextend, &ls);
>>  #endif
>>  }
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mm.icann.org/pipermail/tz/attachments/20231124/a68f5514/attachment.htm>


More information about the tz mailing list