Subject: CVS commit: src/lib/libc
To: None <>
From: Nathan J Williams <>
List: source-changes
Date: 03/04/2003 21:44:11
Module Name:	src
Committed By:	nathanw
Date:		Tue Mar  4 19:44:11 UTC 2003

Modified Files:
	src/lib/libc/gen: execl.c execv.c execvp.c popen.c
	src/lib/libc/stdlib: system.c

Log Message:
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.