Witness panic in pseudofs_vncache

Robert Watson rwatson at freebsd.org
Fri Aug 13 08:21:45 PDT 2004

On Fri, 13 Aug 2004, Martin Blapp wrote:

> Sleeping on "pseudofs" with the following non-sleepable locks held:
> exclusive sleep mutex pseudofs_vncache r = 0 (0xc0903e40) locked @
> /usr/src/sys/fs/pseudofs/pseudofs_vncache.c
> :226
> KDB: enter: witness_warn
> [thread 100232]
> Stopped at      kdb_enter+0x30: leave

Actually, that's not a panic -- your system can keep running, it's a
warning (although you appear to have witness_kdb turned on, so you drop to
the debugger and will need to type continue).

This appears to be a bug in pseudofs due to calling vgone() while holding
the pfs_vncache_mutex, as vgone() can sleep due to acquiring lockmgr
locks.  The fix is likely to make this looping even less efficient by
dropping the mutex before calling vgone() on a vnode, and then restarting.
I've CC'd DES because this is his baby.

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
robert at fledge.watson.org      Principal Research Scientist, McAfee Research

> db> where
> kdb_enter(c080e20c,e5143af8,1,1,1) at kdb_enter+0x30
> witness_warn(5,c09087bc,c084de97,c084928d,1) at witness_warn+0x19b
> msleep(c469cc08,c09087bc,50,c084928d,0) at msleep+0x5b
> acquiredrain(c469cc04,1000040,c084c33b,e7,c3f7a160) at acquiredrain+0x9c
> lockmgr(c469cc04,10007,c469cb58,c3f7a160,e5143ba0) at lockmgr+0x4d2
> vop_stdlock(e5143bf8,e5143c14,c068ce26,e5143bf8,1) at vop_stdlock+0x2c
> vop_defaultop(e5143bf8,1,c062ccaf,c090f400,8) at vop_defaultop+0x18
> vclean(c469cb58,8,c3f7a160,c469cb58,c3f7a160) at vclean+0x50
> vgonel(c469cb58,c3f7a160,c0853c09,a43,0) at vgonel+0x5f
> vgone(c469cb58,0,c0849739,e2,c35dc5a0) at vgone+0x42
> pfs_exit(0,c3f7da68,c084b8ec,cc,c0908260) at pfs_exit+0x74
> exit1(c3f7a160,0,e5143d40,c07e88eb,c3f7a160) at exit1+0x2ed
> exit1(c3f7a160,e5143d14,4,c0851129,1) at exit1
> syscall(2f,2f,2f,bfbfe508,bfbfe468) at syscall+0x275
> Xint0x80_syscall() at Xint0x80_syscall+0x1f
> --- syscall (1, FreeBSD ELF32, sys_exit), eip = 0x832d7c7, esp = 0xbfbfe434, ebp
> = 0xbfbfe440 ---
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"

More information about the freebsd-current mailing list