Subject: CVS commit: src/lib/libc
To: None <firstname.lastname@example.org>
From: Nathan J Williams <email@example.com>
Date: 03/04/2003 21:44:11
Module Name: src
Committed By: nathanw
Date: Tue Mar 4 19:44:11 UTC 2003
src/lib/libc/gen: execl.c execv.c execvp.c popen.c
Don't acquire __environ_lock around exec*() calls; nothing requires
that these calls be thread-safe with respect to the environment, and it
causes serious problems for threaded applications which call vfork() and
exec*() (including indirectly, via popen() or system()).
Acquire and release __environ_lock in the parent in popen() and system() to
play safe and provide the child with a stable environment.
__environ_lock should also have an atfork() handler; still under development.
To generate a diff of this commit:
cvs rdiff -r1.9 -r1.10 src/lib/libc/gen/execl.c
cvs rdiff -r1.6 -r1.7 src/lib/libc/gen/execv.c
cvs rdiff -r1.21 -r1.22 src/lib/libc/gen/execvp.c
cvs rdiff -r1.25 -r1.26 src/lib/libc/gen/popen.c
cvs rdiff -r1.17 -r1.18 src/lib/libc/stdlib/system.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.