cvs commit: src/sys/kern vfs_bio.c

Jung-uk Kim jkim at FreeBSD.org
Thu Sep 29 09:57:13 PDT 2005


On Thursday 29 September 2005 12:18 pm, Peter Edwards wrote:
> On 9/29/05, Jung-uk Kim <jkim at freebsd.org> wrote:
> > On Thursday 29 September 2005 09:03 am, Pawel Jakub Dawidek wrote:
> > > On Thu, Sep 29, 2005 at 10:37:20AM +0000, Peter Edwards wrote:
> > > +> peadar      2005-09-29 10:37:20 UTC
> > > +>
> > > +>   FreeBSD src repository
> > > +>
> > > +>   Modified files:
> > > +>     sys/kern             vfs_bio.c
> > > +>   Log:
> > > +>   Close a race in biodone(), whereby the bio_done field of
> > > the passed +>   bio may have been freed and reassigned by the
> > > wakeup before being +>   tested after releasing the bdonelock.
> > > +>
> > > +>   There's a non-zero chance this is the cause of a few of
> > > the crashes +>   knocking around with biodone() sitting in the
> > > stack backtrace.
> > >
> > > Should this fix the panic on boot in vmware?
> >
> > I thought that might be it, too.  I tried it with 6.0-BETA5 on
> > QEMU but no change. :-(
>
> Ah: If it fails in QEMU, I might be able to reproduce it.

FYI, the most reliable way to reproduce is to 'tar tfv BIG_TARBALL' 
from CD-ROM image.  I have been using 16 MB something.tar.bz2 file as 
a test case.  100% success.  BTW, depending on the emulated CD-ROM 
mode, i. e., DMA or PIO, you will see different crash because of 
different code path.

DMA case:
http://www.freebsd.org/cgi/query-pr.cgi?pr=84102

PIO case:
http://docs.freebsd.org/cgi/mid.cgi?42C626C9.60206

It seems the similar things happened on real hardware:
http://www.freebsd.org/cgi/query-pr.cgi?pr=84568
http://docs.freebsd.org/cgi/mid.cgi?20050921181336.GF72516

I am not sure they are really related but it looks very suspicious.

BTW, 5.4 is okay.  5.4 with ATA mkIII patch is okay.  6.0 without 
PEEMPTION is okay.  So, please don't blame it on the emulators.  Like 
sam@ said, it is good tool to find real bugs without causing real 
damage. ;-)

> Do you mean you replaced the 6.0-BETA5 with your own kernel, yes?

Correct.

Jung-uk Kim


More information about the cvs-src mailing list