On 10-May-01 Szilveszter Adam wrote:
> Hello everybody,
> 
> I have stumbled across some nice giraffe today.
> 
> Look, this is cute (transcribed by hand for your enhanced viewing pleasure):
> (sorry, no serial console handy... should be easy to reproduce though)
> 
># nessusd -D
> 
> witness_get: witness exhausted
> exclusive(sleep mutex) Giant(0xc044a760) locked @ ../../i386/i386/trap.c:1169
> panic: system call open returning with mutex(s) held

Ok, I see what's broken.  I don't know how you are out of witness's though. 
We don't have enough types of mutexes for that to happen.  Try this patch:

Index: subr_witness.c
===================================================================
RCS file: /usr/cvs/src/sys/kern/subr_witness.c,v
retrieving revision 1.70
diff -u -r1.70 subr_witness.c
--- subr_witness.c      2001/05/04 17:15:16     1.70
+++ subr_witness.c      2001/05/10 16:39:27
@@ -1222,6 +1222,9 @@
            ("%s: p != curproc and we aren't in the debugger", __func__));
        KASSERT(!witness_cold, ("%s: witness_cold", __func__));
 
+       if (!db_active && witness_dead)
+               return (0);
+
        nheld = witness_list_locks(&p->p_sleeplocks);
 
        /*

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to