In message <[EMAIL PROTECTED]>, John Baldwin writes:
>
>It looks like the mutex is really held since the mtx_assert before
>witness_unlock didn't trigger.  You can try turning witness off for the time
>being as a workaround.  I'm not sure why witness would be broken, however.

Revision 1.41 of sys/mutex.h seems to be the culprit. Before 1.41,
the defined(LOCK_DEBUG) and !defined(LOCK_DEBUG) cases were identical
except that with LOCK_DEBUG defined, the function versions of
_mtx_*lock_* were used. After 1.41, the !defined(LOCK_DEBUG) case
misses all the MPASS/KASSERT/LOCK_LOG/WITNESS bits.

A simple workaround that seems to stop the panics is below.

Ian

Index: mutex.h
===================================================================
RCS file: /dump/FreeBSD-CVS/src/sys/sys/mutex.h,v
retrieving revision 1.41
diff -u -r1.41 mutex.h
--- mutex.h     2001/09/22 21:19:55     1.41
+++ mutex.h     2001/09/26 00:46:09
@@ -238,7 +238,7 @@
 #define mtx_unlock(m)          mtx_unlock_flags((m), 0)
 #define mtx_unlock_spin(m)     mtx_unlock_spin_flags((m), 0)
 
-#ifdef LOCK_DEBUG
+#if 1
 #define        mtx_lock_flags(m, opts)                                         \
        _mtx_lock_flags((m), (opts), LOCK_FILE, LOCK_LINE)
 #define        mtx_unlock_flags(m, opts)                                       \

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

Reply via email to