Date: Mon, 17 Mar 2008 07:42:13 -0400 From: Michael Butler <imb@protected-networks.net> To: Lawrence Farr <freebsd-stable@epcdirect.co.uk> Cc: freebsd-stable@freebsd.org, 'John Baldwin' <jhb@freebsd.org> Subject: Re: bin/121684: dump frequently hangs Message-ID: <47DE5915.50703@protected-networks.net> In-Reply-To: <01fc01c8881b$075b5620$16120260$@co.uk> References: <alpine.BSF.1.00.0803132341360.1080@nc8000.tharned.org> <200803141546.10569.jhb@freebsd.org> <01fc01c8881b$075b5620$16120260$@co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Lawrence Farr wrote:
> I couldn't get this to apply cleanly against 7, is it safe to use rev
> 1.48 on 7? I have 3 machines here that hang whilst dumping and I'd
> like to test the patch.
For RELENG_7, I'm using the attached. Apply it from /usr,
Michael
[-- Attachment #2 --]
*** src/sys/kern/subr_sleepqueue.c.orig Thu Mar 6 11:13:14 2008
--- src/sys/kern/subr_sleepqueue.c Fri Mar 14 21:58:58 2008
***************
*** 403,414 ****
mtx_unlock(&ps->ps_mtx);
}
/*
! * Lock sleepq chain before unlocking proc
! * without this, we could lose a race.
*/
mtx_lock_spin(&sc->sc_lock);
PROC_UNLOCK(p);
thread_lock(td);
if (ret == 0) {
if (!(td->td_flags & TDF_INTERRUPT)) {
sleepq_switch(wchan);
--- 403,417 ----
mtx_unlock(&ps->ps_mtx);
}
/*
! * Lock the per-process spinlock prior to dropping the PROC_LOCK
! * to avoid a signal delivery race. PROC_LOCK, PROC_SLOCK, and
! * thread_lock() are currently held in tdsignal().
*/
+ PROC_SLOCK(p);
mtx_lock_spin(&sc->sc_lock);
PROC_UNLOCK(p);
thread_lock(td);
+ PROC_SUNLOCK(p);
if (ret == 0) {
if (!(td->td_flags & TDF_INTERRUPT)) {
sleepq_switch(wchan);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47DE5915.50703>
