From owner-cvs-src-old@FreeBSD.ORG Wed Jun 10 12:08:46 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80305106570C for ; Wed, 10 Jun 2009 12:08:46 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5FA048FC1C for ; Wed, 10 Jun 2009 12:08:46 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n5AC8kar047899 for ; Wed, 10 Jun 2009 12:08:46 GMT (envelope-from kib@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n5AC8k5Q047898 for cvs-src-old@freebsd.org; Wed, 10 Jun 2009 12:08:46 GMT (envelope-from kib@repoman.freebsd.org) Message-Id: <200906101208.n5AC8k5Q047898@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to kib@repoman.freebsd.org using -f From: Konstantin Belousov Date: Wed, 10 Jun 2009 12:07:52 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: RELENG_7 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 X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Jun 2009 12:08:53 -0000 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