Do you have WITNESS_SKIPSPIN option in your kernel config?

Here is what supposedly causing the trouble:

a) the process p_spinlocks variable is initialized to one in fork1 during 
   the process creation
b) the sched_lock is released later in fork_exit, but the process'
   p_spinlocks field is not decreased because sched_lock is not tracked by the
   witness subsystem
b) process tried to grab Giant but sees p_spinlocks > 0 ... instant panic :)

The quick and dirty fix is to either set debug.witness_skipspin=0 in
/boot/loader.conf or modify witness_enter function to ignore p_skipspin counter
if debug.witness_skipspin is non-zero. 

------------------------------------------
E-Mail: Alexander N. Kabaev <[EMAIL PROTECTED]>
Date: 12-Mar-2001
Time: 12:40:36
------------------------------------------

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

Reply via email to