panic: System call lstat returning with 1 locks held

John Baldwin jhb at freebsd.org
Wed Jan 16 07:13:34 PST 2008


On Wednesday 16 January 2008 04:55:46 am Kris Kennaway 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?

It could be that lockmgr_disown() doesn't update curthread->td_locks which is
checked by INVARIANTS.  Not sure if it needs to update td_locks, but it might.

-- 
John Baldwin


More information about the freebsd-current mailing list