Sat Jun 11 01:07:33 2011 UTC ()
Use KASSERTMSG so if these trigger, we can see what exactly caused them to fire.


(matt)
diff -r1.3 -r1.4 src/sys/kern/kern_mutex_obj.c

cvs diff -r1.3 -r1.4 src/sys/kern/kern_mutex_obj.c (expand / switch to context diff)
--- src/sys/kern/kern_mutex_obj.c 2011/05/13 22:16:43 1.3
+++ src/sys/kern/kern_mutex_obj.c 2011/06/11 01:07:33 1.4
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_mutex_obj.c,v 1.3 2011/05/13 22:16:43 rmind Exp $	*/
+/*	$NetBSD: kern_mutex_obj.c,v 1.4 2011/06/11 01:07:33 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_mutex_obj.c,v 1.3 2011/05/13 22:16:43 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_mutex_obj.c,v 1.4 2011/06/11 01:07:33 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -106,8 +106,12 @@
 {
 	struct kmutexobj *mo = (struct kmutexobj *)lock;
 
-	KASSERT(mo->mo_magic == MUTEX_OBJ_MAGIC);
-	KASSERT(mo->mo_refcnt > 0);
+	KASSERTMSG(mo->mo_magic == MUTEX_OBJ_MAGIC,
+	    ("%s: lock %p: mo->mo_magic (%#x) != MUTEX_OBJ_MAGIC (%#x)",
+	     __func__, mo, mo->mo_magic, MUTEX_OBJ_MAGIC));
+	KASSERTMSG(mo->mo_refcnt > 0,
+	    ("%s: lock %p: mo->mo_refcnt (%#x) == 0",
+	     __func__, mo, mo->mo_refcnt));
 
 	atomic_inc_uint(&mo->mo_refcnt);
 }
@@ -123,8 +127,12 @@
 {
 	struct kmutexobj *mo = (struct kmutexobj *)lock;
 
-	KASSERT(mo->mo_magic == MUTEX_OBJ_MAGIC);
-	KASSERT(mo->mo_refcnt > 0);
+	KASSERTMSG(mo->mo_magic == MUTEX_OBJ_MAGIC,
+	    ("%s: lock %p: mo->mo_magic (%#x) != MUTEX_OBJ_MAGIC (%#x)",
+	     __func__, mo, mo->mo_magic, MUTEX_OBJ_MAGIC));
+	KASSERTMSG(mo->mo_refcnt > 0,
+	    ("%s: lock %p: mo->mo_refcnt (%#x) == 0",
+	     __func__, mo, mo->mo_refcnt));
 
 	if (atomic_dec_uint_nv(&mo->mo_refcnt) > 0) {
 		return false;