[tz] WG14/C localtime_r draft is not reentrant
Paul Eggert
eggert at cs.ucla.edu
Sun Aug 18 00:38:07 UTC 2019
Brian Inglis wrote:
> WG14/C is looking at:
>
> http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2402.pdf
>
> which seems somewhat based on the POSIX standard.
Thanks for the heads-up. I see that this WG14/C draft is calling localtime_r
"reentrant", but it's not: in POSIX, localtime_r relies on global state to
obtain the time zone, and behavior is undefined if one thread calls localtime_r
while another thread is changing the time zone. Similarly for some of the other
"reentrant" functions mentioned in that draft.
If WG14 wants reentrant, it should standardize localtime_rz etc. a la tzcode and
NetBSD. These functions avoid the races inherent to localtime_r etc. I'll cc.
this to Jens Gustedt to give the draft's author a heads-up. Even if WG14 decides
to stick with POSIXish rather than reentrant functions, the rationale document
should explain why.
More information about the tz
mailing list