This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: First draft of the Y2038 design document
- From: Rich Felker <dalias at libc dot org>
- To: Paul Eggert <eggert at cs dot ucla dot edu>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Tue, 27 Oct 2015 17:42:44 -0400
- Subject: Re: First draft of the Y2038 design document
- Authentication-results: sourceware.org; auth=none
- References: <20151026001252 dot 590e09c1 dot albert dot aribaud at 3adev dot fr> <562EEE05 dot 1080304 at cs dot ucla dot edu> <20151027034324 dot GW8645 at brightrain dot aerifal dot cx> <562F3C6E dot 30905 at cs dot ucla dot edu> <20151027141026 dot GX8645 at brightrain dot aerifal dot cx> <562FE305 dot 7090004 at cs dot ucla dot edu> <20151027205654 dot GY8645 at brightrain dot aerifal dot cx> <562FE594 dot 1050601 at cs dot ucla dot edu>
On Tue, Oct 27, 2015 at 01:59:00PM -0700, Paul Eggert wrote:
> On 10/27/2015 01:56 PM, Rich Felker wrote:
> >A program which does not use functions which
> >are specified to depend on the TZ environment variable has
> >well-defined behavior regardless of the value set in the TZ variable
> >and whether it matches the POSIX timezone form.
>
> That's not what the standard says, and it's not what common practice does.
A relevant part (I don't claim this is the only one) of the text is
from XSH 2.9.1 Thread-Safety:
"Since multi-threaded applications are not allowed to use the environ
variable to access or modify any environment variable while any other
thread is concurrently modifying any environment variable, any
function dependent on any environment variable is not thread-safe if
another thread is modifying the environment; see XSH exec."
Because of this, whether a function accesses the environment is a part
of its interface contract. Functions which are not specified to access
the environment cannot access it, because there is no way to make
their access safe against concurrent modifications to the environment
representation from other threads. This has been discussed on
libc-alpha before in regards to using environment variables for
tunables.
Rich