From owner-cvs-all@FreeBSD.ORG Wed Mar 3 12:33:39 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1120516A4CE; Wed, 3 Mar 2004 12:33:39 -0800 (PST) Received: from smtp.des.no (flood.des.no [217.116.83.31]) by mx1.FreeBSD.org (Postfix) with ESMTP id 877B043D1D; Wed, 3 Mar 2004 12:33:38 -0800 (PST) (envelope-from des@des.no) Received: by smtp.des.no (Pony Express, from userid 666) id DD9385309; Wed, 3 Mar 2004 21:33:36 +0100 (CET) Received: from dwp.des.no (des.no [80.203.228.37]) by smtp.des.no (Pony Express) with ESMTP id 881C05308; Wed, 3 Mar 2004 21:33:28 +0100 (CET) Received: by dwp.des.no (Postfix, from userid 2602) id 85DC133C6B; Wed, 3 Mar 2004 21:33:26 +0100 (CET) To: John Baldwin References: <200403021502.i22F28vF032585@repoman.freebsd.org> <200403021708.43422.jhb@FreeBSD.org> <200403031435.23839.jhb@FreeBSD.org> From: des@des.no (Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?=) Date: Wed, 03 Mar 2004 21:33:26 +0100 In-Reply-To: <200403031435.23839.jhb@FreeBSD.org> (John Baldwin's message of "Wed, 3 Mar 2004 14:35:23 -0500") Message-ID: User-Agent: Gnus/5.090024 (Oort Gnus v0.24) Emacs/21.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on flood.des.no X-Spam-Level: X-Spam-Status: No, hits=0.0 required=5.0 tests=AWL autolearn=no version=2.63 cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern subr_sleepqueue.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Mar 2004 20:33:39 -0000 --=-=-= Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable John Baldwin writes: > Now realize that p_sigacts is a refcount'd struct shared between rfork'd= =20 > processes (i.e. Linux threads). The sleep's don't actually get woken up = via=20 > a wakeup, they get woken up via a signal, so the wait channel is really a= =20 > dummy. Try changing those three msleep's to sleep on &ps and &p->p_sigac= ts=20 > and see if that fixes the panic. well, I still have subr_sleepqueue.c 1.1, but with the changes you suggest I no longer see the "Mismatches locks" message. Patch attached (has style issues though). DES --=20 Dag-Erling Sm=F8rgrav - des@des.no --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=kern_sig.diff Index: sys/kern/kern_sig.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_sig.c,v retrieving revision 1.271 diff -u -r1.271 kern_sig.c --- sys/kern/kern_sig.c 27 Feb 2004 18:52:43 -0000 1.271 +++ sys/kern/kern_sig.c 3 Mar 2004 19:58:31 -0000 @@ -925,7 +925,7 @@ hz = 0; td->td_waitset = &waitset; - error = msleep(ps, &p->p_mtx, PPAUSE|PCATCH, "sigwait", hz); + error = msleep(&ps, &p->p_mtx, PPAUSE|PCATCH, "sigwait", hz); td->td_waitset = NULL; if (error == 0) /* surplus wakeup ? */ error = EINTR; @@ -1153,7 +1153,7 @@ SIG_CANTMASK(mask); td->td_sigmask = mask; signotify(td); - while (msleep(p->p_sigacts, &p->p_mtx, PPAUSE|PCATCH, "pause", 0) == 0) + while (msleep(&p->p_sigacts, &p->p_mtx, PPAUSE|PCATCH, "pause", 0) == 0) /* void */; PROC_UNLOCK(p); /* always return EINTR rather than ERESTART... */ @@ -1189,7 +1189,7 @@ SIG_CANTMASK(mask); SIGSETLO(td->td_sigmask, mask); signotify(td); - while (msleep(p->p_sigacts, &p->p_mtx, PPAUSE|PCATCH, "opause", 0) == 0) + while (msleep(&p->p_sigacts, &p->p_mtx, PPAUSE|PCATCH, "opause", 0) == 0) /* void */; PROC_UNLOCK(p); /* always return EINTR rather than ERESTART... */ --=-=-=--