Index: kern_sig.c =================================================================== RCS file: /data/ncvs/src/sys/kern/kern_sig.c,v retrieving revision 1.264 diff -u -r1.264 kern_sig.c --- kern_sig.c 3 Jan 2004 02:02:25 -0000 1.264 +++ kern_sig.c 8 Jan 2004 21:44:29 -0000 @@ -2080,7 +2080,11 @@ return (0); sig = sig_ffs(&sigpending); - _STOPEVENT(p, S_SIG, sig); + if (p->p_stops & S_SIG) { + mtx_unlock(&ps->ps_mtx); + stopevent(p, S_SIG, sig); + mtx_lock(&ps->ps_mtx); + } /* * We should see pending but ignored signals @@ -2296,7 +2300,11 @@ ktrpsig(sig, action, td->td_pflags & TDP_OLDMASK ? &td->td_oldsigmask : &td->td_sigmask, 0); #endif - _STOPEVENT(p, S_SIG, sig); + if (p->p_stops & S_SIG) { + mtx_unlock(&ps->ps_mtx); + stopevent(p, S_SIG, sig); + mtx_lock(&ps->ps_mtx); + } if (!(td->td_flags & TDF_SA && td->td_mailbox) && action == SIG_DFL) {