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