Subject: Re: pool problems, TAILQ, and more...
To: Manuel Bouyer <bouyer@antioche.lip6.fr>
From: Brian C. Grayson <bgrayson@orac.ece.utexas.edu>
List: tech-kern
Date: 04/04/2000 22:29:11
On Tue, Apr 04, 2000 at 11:09:13AM +0200, Manuel Bouyer wrote:
> On Sun, Apr 02, 2000 at 10:49:45PM -0500, Brian C. Grayson wrote:
> > On Thu, Mar 30, 2000 at 10:13:27PM -0800, Chuck Silvers wrote:
> > > ok, try the attached patch and let me know if you find anything.
> > 
> >   I got panics from two different points now, with Chuck's
> > fault-if-touching-freed-memory patches:
> > 
> > uvm_fault(0xc0639d80, 0xc090c000, 0, 1) -> 5
> > (gdb) #0  0x0 in ?? ()
> > #1  0xc07d9000 in ?? ()
> > #2  0xc03f8809 in cpu_reboot ()
> > #3  0xc01c325b in db_sync_cmd ()
> > #4  0xc01c2eab in db_command ()
> > #5  0xc01c303f in db_command_loop ()
> > #6  0xc01c6432 in db_trap ()
> > #7  0xc03f5240 in kdb_trap ()
> > #8  0xc0404080 in trap ()
> > #9  0xc0100eed in calltrap ()
> > #10 0xc041c615 in wddone (v=0xc0892800) at ../../../../dev/ata/wd.c:634
> 
> Could you quote the lines around wd.c:634 in you source tree ?
> In -current 634 is in wdrestart, not wddone ...

Sorry --  I've added some debugging stuff, so line numbers won't
match up.  So here's what I have:

     $NetBSD: wd.c,v 1.202 2000/02/07 20:16:55 thorpej Exp $

    629         disk_unbusy(&wd->sc_dk, (bp->b_bcount - bp->b_resid));
    630 #if NRND > 0
    631         rnd_add_uint32(&wd->rnd_source, bp->b_blkno);
    632 #endif
    633 CHECKPOOL();
    634         biodone(bp);
    635 CHECKPOOL();
    636         wd->openings++;
    637         wdstart(wd);
    638 CHECKPOOL();
    639 }
    640 
    641 void
    642 wdrestart(v)
    643         void *v;
    644 {

  CHECKPOOL() expands to a call to
checkpool(__FILE__,__LINE__), which verifies that the
last-freed item hasn't been modified.

  I have Chuck's patches enabled for both the swapbuf_pool and
the vndbuf_pool, although I've only seen panics myself with the
vndbuf_pool.

  Brian
-- 
"There is only one purpose for a priority encoder, and that is to do priority
encoding." - J.R. Jump, ELEC 326