Date: Wed, 10 Jun 2009 12:07:52 +0000 (UTC) From: Konstantin Belousov <kib@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/amd64/linux32 linux32_machdep.c src/sys/i386/linux linux_machdep.c src/sys/kern kern_exec.c kern_exit.c kern_fork.c kern_proc.c src/sys/sys proc.h Message-ID: <200906101208.n5AC8k5Q047898@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
kib 2009-06-10 12:07:52 UTC
FreeBSD src repository
Modified files: (Branch: RELENG_7)
sys/amd64/linux32 linux32_machdep.c
sys/i386/linux linux_machdep.c
sys/kern kern_exec.c kern_exit.c kern_fork.c
kern_proc.c
sys/sys proc.h
Log:
SVN rev 193906 on 2009-06-10 12:07:52Z by kib
MFC r185647;
Several threads in a process may do vfork() simultaneously. Then, all
parent threads sleep on the parent' struct proc until corresponding
child releases the vmspace. Each sleep is interlocked with proc mutex of
the child, that triggers assertion in the sleepq_add(). The assertion
requires that at any time, all simultaneous sleepers for the channel use
the same interlock.
Silent the assertion by using conditional variable allocated in the
child. Broadcast the variable event on exec() and exit().
MFC r188750:
Adapt linux emulation to use cv for vfork wait.
Revision Changes Path
1.45.2.5 +2 -2 src/sys/amd64/linux32/linux32_machdep.c
1.78.2.3 +2 -2 src/sys/i386/linux/linux_machdep.c
1.308.2.9 +1 -1 src/sys/kern/kern_exec.c
1.304.2.6 +2 -0 src/sys/kern/kern_exit.c
1.282.2.9 +1 -1 src/sys/kern/kern_fork.c
1.252.2.22 +1 -0 src/sys/kern/kern_proc.c
1.491.2.16 +2 -0 src/sys/sys/proc.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906101208.n5AC8k5Q047898>
