Repeated similar panics on -STABLE

Dmitry Sivachenko demon at FreeBSD.org
Sun Apr 20 02:36:33 PDT 2003


On Sun, Apr 20, 2003 at 01:16:16AM -0700, Don Lewis wrote:
> On 20 Apr, Dmitry Sivachenko wrote:
> > On Sat, Apr 19, 2003 at 03:15:20PM -0700, Don Lewis wrote:
<snip>

> If we don't get into the "if" block, these will contain leftover
> garbages from the stack.
> 
> > (kgdb) p va
> > $16 = 0x5cdd8000 <Address 0x5cdd8000 out of bounds>
> 
> Interesting ... how does va get the same value as kbp?  Is it coming
> from the
> 	va = (caddr_t) kmem_malloc()
> assignment in the "if" block that we don't think we're executing, or the
> 	va = kbp->kb_next;
> assignment that is causing the panic?
> 
> If kbp is pointing to a non-existent page, why does Terry's patch seem
> to fix the problem for you?

Well, here is probably a misunderstanding..
We did NOT apply Terry's patch.  Let me quote a bit from my e-mail to Terry:

TL> Did my patch fix your problem?
TL>
TL> Or did you tune your kernel, as I suggested, to fix your problem?
TL>
TL> Or is it still a problem?

DS>We changed maxusers from 512 to 0 and decreased the number of
DS>NMBCLUSTERS.  Now everything is working fine, but since these panics occured
DS>about once a week I can't say for sure they are completely gone.
DS>Let's wait at least one more week...

Thus I wanted to say that we only tuned maxusers and NMBCLUSTERS.  We
run virgin -STABLE kernel without any patches.  Probably my english leaves much
to be desired ;-((


> 
> I wonder if things are getting further munged after the trap occurs?
> That would make it more difficult to track down the problem from the
> core file.
> 
> Something else of interest to print is
> 	bucket[7]
> bucket[7].kb_next and bucket[7].kb_last might shed some light.
> 

(kgdb) up 22
#22 0xc015daff in malloc (size=72, type=0xc029fee0, flags=0)
    at /mnt/se3/releng_4/src/sys/kern/kern_malloc.c:243
243             va = kbp->kb_next;
(kgdb) p bucket[7]
$1 = {kb_next = 0x5cdd8000 <Address 0x5cdd8000 out of bounds>,
  kb_last = 0xc8fcb000 "", kb_calls = 2127276, kb_total = 4256,
  kb_elmpercl = 32, kb_totalfree = 1264, kb_highwat = 160, kb_couldfree = 5497}
(kgdb) p bucket[7].kb_next
$2 = 0x5cdd8000 <Address 0x5cdd8000 out of bounds>
(kgdb) p bucket[7].kb_last
$3 = 0xc8fcb000 ""
(kgdb)

> 
> Something interesting is that the fault address, and the values of va
> and kbp are the same in both stack frames ...
> 
> 
> One other question ... is your kernel compiled with INVARIANTS?  That
> changes the definition of struct freelist.

Without.


PS: If you need additional information, feel free to ask.
I am more than willing to help.


More information about the freebsd-hackers mailing list