Subject: Re: Another serious bug in NetBSD-1.6.1
To: David Laight <david@l8s.co.uk>
From: Richard Earnshaw <rearnsha@buzzard.freeserve.co.uk>
List: tech-kern
Date: 03/14/2003 00:51:59
> > #12 0xc028375e in panic ()
> > (gdb)
> > #13 0xc03134ce in trap ()
> > (gdb)
> > #14 0xc0100bf7 in calltrap ()
> > (gdb)
> > #15 0xc02a7021 in genfs_putpages ()
> > (gdb) disass
>
> > 0xc02a7017 <genfs_putpages+1087>: push $0x40
> > 0xc02a7019 <genfs_putpages+1089>: push $0x0
> > 0xc02a701b <genfs_putpages+1091>: push %esi
> > 0xc02a701c <genfs_putpages+1092>: call 0xc0311248 <pmap_change_attrs>
> > 0xc02a7021 <genfs_putpages+1097>: add $0x10,%esp
> > 0xc02a7024 <genfs_putpages+1100>: test %eax,%eax
>
>
> Hmmm.... gbd strickes again - failing to give a traceback that includes
> anything to do with the routine that actually exploded.
>
Not necessarily. It could be the compiler optimizing away certain stack
frames (or tail-calling from one routine to another). The return address
you have shows the instruction after the call to pmap_change_attrs, so you
probably want to disassemble that -- of course, that might have
tail-called as well.
Finally, it might just be that the trap insertion code fails to set up a
frame chain properly in certain cases, in which case it would be NetBSD's
fault ;-)
> The stack traceback also 'usefully' fails to give either the %esp
> or %ebp value for each frame.
>
> All done just to make life more interesting :-)
>
All part of life's obstacle course...
R.