Linuxolator panic: Lock (rw) Name Cache exclusively locked

Kostik Belousov kostikbel at gmail.com
Thu Aug 6 11:43:46 UTC 2009


On Thu, Aug 06, 2009 at 12:56:08AM +0200, Lucius Windschuh wrote:
> Hi.
> I tried to install CA Wily Introscope 8.1, an enterprise application
> performance monitoring framework, on FreeBSD.
> It is Java-based and works, if installed.
> Unfortunately, the installer panics my machine reproducably when it
> exits after the installation:
> panic: Lock (rw) Name Cache exclusively locked @
> /usr/src/sys/kern/vfs_cache.c:589
> 
> I'm using -CURRENT r196074 (i386) at the moment.
> Kernel config: http://sites.google.com/site/lwfreebsd/Home/files/kernelconfig-CURRENT.txt?attredirects=0
> 
> I have a kernel dump for further analysis (the installation archive
> may not be published, I suppose):
> 
> $ kgdb ... vmcore.12
> (kgdb) bt
> #0  doadump () at pcpu.h:246
> #1  0xc063cd1e in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:419
> #2  0xc063cff2 in panic (fmt=Variable "fmt" is not available.
> ) at /usr/src/sys/kern/kern_shutdown.c:575
> #3  0xc067e515 in witness_assert (lock=0xc0b160fc, flags=Variable
> "flags" is not available.
> )
>     at /usr/src/sys/kern/subr_witness.c:2235
> #4  0xc063a1d5 in _rw_assert (rw=0xc0b160fc, what=Variable "what" is
> not available.
> )
>     at /usr/src/sys/kern/kern_rwlock.c:1020
> #5  0xc063a80b in _rw_runlock (rw=0xc0b160fc,
>     file=0xc0905c58 "/usr/src/sys/kern/vfs_cache.c", line=589)
>     at /usr/src/sys/kern/kern_rwlock.c:526
> #6  0xc06b8297 in cache_lookup (dvp=0xc733c218, vpp=0xf63fcc70, cnp=0xf63fcc00)
>     at /usr/src/sys/kern/vfs_cache.c:589
> #7  0xc06b837d in vfs_cache_lookup (ap=0xf63fcc48)
>     at /usr/src/sys/kern/vfs_cache.c:881
> #8  0xc08a79c2 in VOP_LOOKUP_APV (vop=0xc65ec880, a=0xf63fcc48)
>     at vnode_if.c:123
> #9  0xc0de7547 in linux_getcwd (td=0xc718e240, args=0xf63fccf8)
>     at vnode_if.h:54
> #10 0xc0898567 in syscall (frame=0xf63fcd38)
>     at /usr/src/sys/i386/i386/trap.c:1073
> #11 0xc087b8c0 in Xint0x80_syscall () at /usr/src/sys/i386/i386/exception.s:261
> #12 0x00000033 in ?? ()
> Previous frame inner to this frame (corrupt stack?)
> 
> Panicing the kernel with getcwd() is strange. :-D

Please try this patch.

diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index f21f4af..7854803 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -416,7 +416,8 @@ retry_wlocked:
 				if (dvp->v_cache_dd->nc_flag & NCF_ISDOTDOT)
 					cache_zap(dvp->v_cache_dd);
 				dvp->v_cache_dd = NULL;
-				goto unlock;
+				CACHE_WUNLOCK();
+				return (0);
 			}
 			if (dvp->v_cache_dd->nc_flag & NCF_ISDOTDOT)
 				*vpp = dvp->v_cache_dd->nc_vp;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-emulation/attachments/20090806/3bb9f4a4/attachment.pgp


More information about the freebsd-emulation mailing list