panic: System call lstat returning with 1 locks held

Scot Hetzel swhetzel at gmail.com
Wed Jan 16 16:33:15 PST 2008


On 1/16/08, Kris Kennaway <kris at freebsd.org> wrote:
> Scot Hetzel wrote:
> > On 1/15/08, Kostik Belousov <kostikbel at gmail.com> wrote:
> >> On Tue, Jan 15, 2008 at 07:52:12AM -0600, Scot Hetzel wrote:
> >>> When I boot a Jan 13th or Jan 15th kernel, and then run
> >>> /usr/local/etc/cvsup/update.sh to update the local CVS repository, I
> >>> get the following panic:
> >>>
> >>> panic: System call lstat returning with 1 locks held
> >>> cpuid = 0
> >>> KDB: enter: panic
> >>> [thread ; pid 1240 tid 10031]
> >>> stopped at kdb_enter+0x3d: movq $0,0x41b048(%rip)
> >>> db> show alllocks
> >>> db> show locks
> >>> db> bt
> >>> tracing pid 1240 tid 10031 td 0xffffff001c1ad360
> >>> kdb_enter() at kdb_enter+0x3d
> >>> panic() at panic+0x176
> >>> syscalls() at syscalls+0x66d
> >>> Xfast_syscalls() at Xfast_syscalls+0xab
> >>> --- syscall (0, FreeBSD ELF64, nosys), rip = 0x8009e87ec, rsp=
> >>> 0x72ec50, rbp = 0x72ed28 ---
> >>>
> >> I think this could be related to the recent vn_lock()/VOP_LOCK() KPI changes.
> >> Please, add DEBUG_VFS_LOCKS to the kernel config, and do the
> >>         show lockedvnods
> >> from the ddb prompt when the panic occurs. The witness does not track
> >> the lockmgr locks.
> >>
> > I added DEBUG_VFS_LOCKS to the kernel config file, rebuilt and
> > installed the kernel.  After rebooting the system, I started the cvsup
> > update for my local mirror, when the panic occured I received a
> > similar panic to the one above.  When I used 'show lockedvnods' the
> > only thing that was displayed was 'Locked vnodes' and that was it.
> >
> > I'm going to try a binary search to see if I can narrow the problem down.
>
> Do you also have witness enabled?
>
witness is enabled in the kernel:

# Debugging for use in -current
options         KDB                     # Enable kernel debugger support.
options         DDB                     # Support DDB.
options         GDB                     # Support remote GDB.
options         INVARIANTS              # Enable calls of extra sanity checking
options         INVARIANT_SUPPORT       # Extra sanity checks of internal struct
ures, required by INVARIANTS
options         WITNESS                 # Enable checks to detect deadlocks and
cycles
options         WITNESS_SKIPSPIN        # Don't run witness on spinlocks for spe
ed
options         DEBUG_VFS_LOCKS

and sysctl debug.witness.watch is set to 1.

Scot


More information about the freebsd-current mailing list