NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/43439: mount_null panic: lockdebug_wantlock: locking against myself



>Number:         43439
>Category:       kern
>Synopsis:       mount_null panic: lockdebug_wantlock: locking against myself
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jun 09 05:15:00 +0000 2010
>Originator:     matthew green
>Release:        NetBSD 5.99.30
>Organization:
people's front against (bozotic) www (softwar foundation)
>Environment:
Architecture: amd64
Machine: amd64
>Description:

        mounting a r/w nullfs over a r/o nullfs crashes.

        my system that has a copy of pkgsrc in /home/current/pkgsrc, where
        /home is an FFS (wapbl or not -- in my testing).  then i mount this
        directory r/o nullfs to /usr/pkgsrc, and then i mount
        /home/current/pkgsrc/distfiles on /usr/pkgsrc/distfiles as a r/w
        nullfs.

        the final mount crashes with this:

login: Reader / writer lock error: lockdebug_wantlock: locking against myself

lock address : 0xffff80004ba43ab0 type     :     sleep/adaptive
initialized  : 0xffffffff805c72af
shared holds :                  0 exclusive:                  1
shares wanted:                  0 exclusive:                  1
current cpu  :                  1 last held:                  1
current lwp  : 0xffff80004b8b0800 last held: 0xffff80004b8b0800
last locked  : 0xffffffff805c4dc6 unlocked : 0xffffffff805c4e3c
owner/count  : 0xffff80004b8b0800 flags    : 0x0000000000000004

Turnstile chain at 0xffffffff809e9860.
=> No active turnstile for this lock.

panic: LOCKDEBUG
cpu1: Begin traceback...
printf_nolog() at netbsd:printf_nolog+0xbc
cpu1: End traceback...
fatal breakpoint trap in supervisor mode
trap type 1 code 0 rip ffffffff801b9bed cs 8 rflags 246 cr2  7f7ffd472eb0 cpl 0 
rsp ffff80004b8f1400
Stopped in pid 437.1 (mount_null) at    netbsd:breakpoint+0x5:  leave
db{1}> bt
breakpoint() at netbsd:breakpoint+0x5
panic() at netbsd:panic+0x2ba
lockdebug_locked() at netbsd:lockdebug_locked
rw_enter() at netbsd:rw_enter+0x2f1
vlockmgr() at netbsd:vlockmgr+0xdf
VOP_LOCK() at netbsd:VOP_LOCK+0x64
vn_lock() at netbsd:vn_lock+0xd5
cache_lookup() at netbsd:cache_lookup+0x212
ufs_lookup() at netbsd:ufs_lookup+0xc4
VOP_LOOKUP() at netbsd:VOP_LOOKUP+0x80
do_lookup() at netbsd:do_lookup+0x43a
namei() at netbsd:namei+0x276
nullfs_mount() at netbsd:nullfs_mount+0xb9
VFS_MOUNT() at netbsd:VFS_MOUNT+0x34
do_sys_mount() at netbsd:do_sys_mount+0x796
sys___mount50() at netbsd:sys___mount50+0x33
syscall() at netbsd:syscall+0xaa

>How-To-Repeat:

        fstab with these three lines:

/dev/wd0e                       /home                  ffs     rw,log     1 2
/home/current/pkgsrc            /usr/pkgsrc            null    ro,hidden
/home/current/pkgsrc/distfiles  /usr/pkgsrc/distfiles  null    rw,hidden

>Fix:



Home | Main Index | Thread Index | Old Index