Subject: Re: kern/35279: -current can panic with "panic: vput: ref cnt"__
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
List: netbsd-bugs
Date: 12/19/2006 15:40:02
The following reply was made to PR kern/35279; it has been noted by GNATS.
From: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
To: gnats-bugs@netbsd.org
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org
Subject: Re: kern/35279: -current can panic with "panic: vput: ref cnt"__
Date: Tue, 19 Dec 2006 16:36:57 +0100
On Tue, Dec 19, 2006 at 09:50:00AM +0000, nick.hudson@dsl.pipex.com wrote:
[snip]
> >Description:
> Random panics of "panic: vput: ref cnt" with the latest vfs_lookup
>
> nick@topcat$ ident /netbsd | grep vfs_lookup
> $NetBSD: vfs_lookup.c,v 1.75 2006/12/13 13:36:19 yamt Exp $
>
> I have a couple of crash dumps, but can't get gdb to give a backtrace atm.
I have one crash dump that seems to work:
#11 0xc0465655 in panic (fmt=0xc08cf4b2 "vput: ref cnt") at /build/dist/src/sys/kern/subr_prf.c:243
#12 0xc0491bd4 in vput (vp=0xccbc3e80) at /build/dist/src/sys/kern/vfs_subr.c:1248
#13 0xc048fa16 in namei (ndp=0xccbe2b88) at /build/dist/src/sys/kern/vfs_lookup.c:298
#14 0xc0436a4b in check_exec (l=0xccbc9f0c, epp=0xccbe2b20, flag=1) at /build/dist/src/sys/kern/kern_exec.c:259
#15 0xc0436e5a in execve1 (l=0xccbc9f0c, path=0x806fc00 <Address 0x806fc00 out of bounds>, args=0x806c4e0,
envs=0x806d080, fetch_element=0xc04369f0 <execve_fetch_element>) at /build/dist/src/sys/kern/kern_exec.c:498
#16 0xc0437df1 in sys_execve (l=0xccbc9f0c, v=0xccbe2c48, retval=0xccbe2c68)
at /build/dist/src/sys/kern/kern_exec.c:405
#17 0xc04fb5c3 in syscall_plain (frame=0xccbe2c88) at /build/dist/src/sys/arch/i386/i386/syscall.c:144
#18 0xc010069d in syscall1 ()
(gdb) fr 13
#13 0xc048fa16 in namei (ndp=0xccbe2b88) at /build/dist/src/sys/kern/vfs_lookup.c:298
298 vput(ndp->ni_dvp);
(gdb) list
293 cnp->cn_nameptr = cnp->cn_pnbuf;
294 ndp->ni_startdir = dp;
295 error = lookup(ndp);
296 if (error != 0) {
297 if (ndp->ni_dvp) {
298 vput(ndp->ni_dvp);
299 }
300 PNBUF_PUT(cnp->cn_pnbuf);
301 return (error);
302 }
(gdb) print error
$1 = 63 // ENAMETOOLONG
--
Juergen Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig (Germany)