Date: Thu, 28 Jun 2001 17:08:16 -0400 From: "Alexander N. Kabaev" <ak03@gte.com> To: freebsd-current@FreeBSD.org Cc: jhb@FreeBSD.org Subject: Kernel panics with debug.witness_watch=0 Message-ID: <20010628170816.A717@kanpc.gte.com>
next in thread | raw e-mail | index | archive | help
-CURRENT kernel panics when booting with debug.witness_watch tunable set to 0
in loader. It looks like witness_assert function should not do anything in
this case. Attached patch fixes the problem for me.
The panic I am getting looks like that:
panic: Lock (sx) fork list not locked @ ../../kern/kern_fork.c:590.
Debugger("panic")
Stopped at Debugger+0x44: pushl %ebx
db> trace
Debugger(c034ff7b) at Debugger+0x44
panic(c0353360,c0350540,c034da0e,c034da2a,24e) at panic+0x70
witness_assert(c03e3c00,2,c034da2a,24e,0) at witness_assert+0x9f
_sx_sunlock(c03e3c00,c034da2a,24e,c03c7c30,c0b3dad0) at _sx_sunlock+0x8e
fork1(c0426e00,20014,c0426de0) at fork1+0x1c6a
create_init(0,4eec00,4ee000,0,c012f0b2) at create_init+0x18
mi_startup() at mi_startup+0x90
begin() at begin+0x29
db>
The patch:
Index: subr_witness.c
===================================================================
RCS file: /usr/ncvs/src/sys/kern/subr_witness.c,v
retrieving revision 1.77
diff -u -r1.77 subr_witness.c
--- subr_witness.c 2001/06/27 06:27:29 1.77
+++ subr_witness.c 2001/06/28 20:27:57
@@ -1351,6 +1351,9 @@
#ifdef INVARIANT_SUPPORT
struct lock_instance *instance;
+ if (lock->lo_witness == NULL || witness_dead)
+ return;
+
if ((lock->lo_class->lc_flags & LC_SLEEPLOCK) != 0)
instance = find_instance(curproc->p_sleeplocks, lock);
else if ((lock->lo_class->lc_flags & LC_SPINLOCK) != 0)
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010628170816.A717>
