Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Dec 2003 20:16:07 -0800
From:      Peter Wemm <peter@wemm.org>
To:        Bruce Cran <bruce@cran.org.uk>
Cc:        freebsd-current@freebsd.org
Subject:   Re: panic: getnewvnode: free vnode isn't 
Message-ID:  <20031214041607.EE27B2A8D5@canning.wemm.org>
In-Reply-To: <20031213232156.GA656@buffy.brucec.backnet> 

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Cran wrote:
> 
> --G4iJoqBmSsgzjUCe
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: inline
> 
> On Sat, Dec 13, 2003 at 05:00:47PM +0000, Ian Dowse wrote:
> > In message <20031210234538.GA746@buffy.brucec.backnet>, Bruce Cran writes:
> > >#10 0xc04bb923 in panic (fmt=0xc05f16d7 "getnewvnode: free vnode isn't")
> > >    at /usr/src/sys/kern/kern_shutdown.c:534
> > >#11 0xc0500fb5 in getnewvnode (tag=0xc05f432f "ufs", mp=0xc43f2000, vops=0
    x0, 
> > >    vpp=0x0) at /usr/src/sys/kern/vfs_subr.c:1004
> > 
> > Could people seeing this panic try the following patch? I haven't
> > thought through this in much detail, but it seems that vnodes should
> > be removed from the free list before being cleaned. The addition
> > of the VI_DOINGINACT test about a year ago probably made this panic
> > more likely, but I don't know why it has suddenly cropped up recently.
> > 
> > Jeff, does this look reasonable to you? It seems that while most
> > callers of vclean() ensure that the vnode is not on the free list,
> > some direct users of vgone/vgonel do not (e.g. vflush, vrecycle).
> > This could result in a vnode being on the free list while it is
> > being recycled. BTW, I think we may no longer need to increment the
> > reference count in vclean(), and the comment about VOP_INACTIVE
> > before the VOP_LOCK() call is no longer accurate.
> > 
> > I guess it's possible that this could also affect the sysinstall
> > crash, but that is probably unlikely.
> > 
> 
> The patch hasn't stopped the panics, but I've tracked down a series of
> actions which can trigger it fairly reliably.   Firstly, the new code is run
> after mounting the root filesystem (once), on shutdown lots of times,
> once when I plug the USB Speedtouch 330 modem (ugen0) in (only if 'ppp
> -ddial' is already running), and twice
> when modem_run from the speedtouch port is run.   I ran a stress test of my 
> system, compiling world, uncompressing archives, cvsupping etc
> while the modem was plugged in.  I unplugged the modem,
> plugged it back in, got the 'ugenread: no pipe' messages, ran modem_run
> again and ppp picked up the connection again.   I then ran 'du -h /usr/src' 
> and after a second the system paniced. 

Hmm. I've been going nuts with this for the last few days.  I hadn't seen it
before the last few days.  The key variable that has changed here is that
I've just started using USB keyboard/mouse and a KVM.  I've been having huge
problems with the kvm, so devices have been coming and going all the time.

And now that I think about it, I have had a couple of these happen when cvsup
runs from cron just after I've switched the kvm from one machine to another...

I wonder if there is a devfs factor here with devices coming and going?  Or
maybe its usb rather than devfs?  Does anybody else see this sort of thing?

Cheers,
-Peter
--
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031214041607.EE27B2A8D5>