Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Mar 2003 18:10:20 -0500 (EST)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        Martin Karlsson <mk-freebsd@bredband.net>
Cc:        freebsd-current@freebsd.org
Subject:   Re: panic: blockable sleep lock (sleep mutex) Giant @ /usr/src/sys/vm/vm_fault.c:206
Message-ID:  <16000.57820.971424.771124@grasshopper.cs.duke.edu>
In-Reply-To: <20030325213403.GA715@c-303a70d5.bredbandsbolaget.se>
References:  <20030325213403.GA715@c-303a70d5.bredbandsbolaget.se>

next in thread | previous in thread | raw e-mail | index | archive | help

Martin Karlsson writes:

 > #9  0xc02dca88 in calltrap () at {standard input}:96
 > #10 0xc01e7b0b in panic (fmt=0x0) at /usr/src/sys/kern/kern_shutdown.c:528
 > #11 0xc020256e in witness_lock (lock=0xc03760c0, flags=8, file=0xc0332416 "/usr/src/sys/vm/vm_fault.c", line=206)
 >     at /usr/src/sys/kern/subr_witness.c:604
 > #12 0xc01e0237 in _mtx_lock_flags (m=0xc03760c0, opts=0, file=0xc0332416 "/usr/src/sys/vm/vm_fault.c", line=206) at /usr/src/sys/kern/kern_mutex.c:336


It looks like the witness mutex debugging system crashed.  This sort
of thing tends to happen when the witness data structures become
corrupt.  A frequent cause of this is a module failing to destroy a
mutex.

I think the recent addition of the 

  MTX_SYSINIT(linux_osname, &osname_lock, "linux osname", MTX_DEF);

could be causing the problem, as I do not see how its getting torn
down.


Can you try the following patch (it may not even compile,  I don't
have a  current box handy):

(its obviously incomplete, just intended to see if it fixes the
problem you are seeing)

Drew


Index: compat/linux/linux_mib.c
===================================================================
RCS file: /home/ncvs/src/sys/compat/linux/linux_mib.c,v
retrieving revision 1.19
diff -u -r1.19 linux_mib.c
--- compat/linux/linux_mib.c	13 Mar 2003 22:45:43 -0000	1.19
+++ compat/linux/linux_mib.c	25 Mar 2003 23:05:08 -0000
@@ -50,7 +50,7 @@
 SYSCTL_NODE(_compat, OID_AUTO, linux, CTLFLAG_RW, 0,
 	    "Linux mode");
 
-static struct mtx osname_lock;
+struct mtx osname_lock;
 MTX_SYSINIT(linux_osname, &osname_lock, "linux osname", MTX_DEF);
 
 static char	linux_osname[LINUX_MAX_UTSNAME] = "Linux";
Index: i386/linux/linux_sysvec.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/linux/linux_sysvec.c,v
retrieving revision 1.116
diff -u -r1.116 linux_sysvec.c
--- i386/linux/linux_sysvec.c	21 Mar 2003 19:49:34 -0000	1.116
+++ i386/linux/linux_sysvec.c	25 Mar 2003 23:07:36 -0000
@@ -885,6 +885,7 @@
 					&linux_glibc2brand,
 					NULL
 				};
+extern struct mtx osname_lock;
 
 static int
 linux_elf_modevent(module_t mod, int type, void *data)
@@ -925,6 +926,7 @@
 				linux_ioctl_unregister_handler(*lihp);
 			if (bootverbose)
 				printf("Linux ELF exec handler removed\n");
+			mtx_destroy(&osname_lock);
 		} else
 			printf("Could not deinstall ELF interpreter entry\n");
 		break;

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?16000.57820.971424.771124>