Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 May 1999 20:18:33 -0700
From:      Mike Smith <mike@smith.net.au>
To:        Kevin Day <toasty@home.dragondata.com>
Cc:        current@freebsd.org
Subject:   Re: -current page fault at 0xdeadc0de 
Message-ID:  <199905160318.UAA03441@dingo.cdrom.com>
In-Reply-To: Your message of "Wed, 12 May 1999 21:58:59 CDT." <199905130258.VAA11540@home.dragondata.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> 
> I had two systems reboot at nearly the same time. (30 seconds apart), and
> are completely unrelated.

These both look like stack damage, actually.

> One system was running 2.2.8, and my core file presents me with this:
> 
> su-2.02# gdb -k
> GDB is free software and you are welcome to distribute copies of it
>  under certain conditions; type "show copying" to see the conditions.
> There is absolutely no warranty for GDB; type "show warranty" for details.
> GDB 4.16 (i386-unknown-freebsd), Copyright 1996 Free Software Foundation,
> Inc.
> (kgdb) exec-file kernel.0
> (kgdb) symbol-file kernel.0.debug
> Reading symbols from kernel.0.debug...done.
> (kgdb) core-file vmcore.0
> IdlePTD 24a000
> current pcb at 202bfc
> #0  0x14 in ?? ()
> (kgdb) bt
> #0  0x14 in ?? ()
> #1  0x34000004 in ?? ()
> Cannot access memory at address 0x7205c76a.
> 
> Were things just trashed, or am I doing something wrong?

Looks like a return from a function that's destroyed the stack.

> 
> The other system was running -current, and gives me:
...
> Fatal trap 12: page fault while in kernel mode
> fault virtual address   = 0xdeadc0de
> fault code              = supervisor read, page not present
> instruction pointer     = 0x8:0xdeadc0de

Jump through vector in freed memory; someone has freed a region of 
memory and is still using it, or has freed a region of memory that was 
never obtained by malloc.

> panic: page fault
> syncing disks... 
> Fatal trap 12: page fault while in kernel mode
> fault virtual address   = 0xdeadc126
> fault code              = supervisor read, page not present
> instruction pointer     = 0x8:0xc018e3d8

Whoops.  You need DDB to track this; you're only going to get the trace 
for the second fault with gdb, which won't be at all illuminating I 
don't think.

...
> #0  boot (howto=260) at ../../kern/kern_shutdown.c:288
> 288                     dumppcb.pcb_cr3 = rcr3();
> (kgdb) bt
> #0  boot (howto=260) at ../../kern/kern_shutdown.c:288
> #1  0xc0145755 in panic () at ../../kern/kern_shutdown.c:450
> #2  0xc020e9e2 in trap_fatal (frame=0xcb4ad8dc, eva=3735929126)
>     at ../../i386/i386/trap.c:917
> #3  0xc020e695 in trap_pfault (frame=0xcb4ad8dc, usermode=0, eva=3735929126)
>     at ../../i386/i386/trap.c:810
> #4  0xc020e2d7 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16, tf_edi =
> 0, 
>       tf_esi = 0, tf_ebp = -884287172, tf_isp = -884287224, tf_ebx = 16384, 
>       tf_edx = -559038242, tf_ecx = -1059309536, tf_eax = -1053816960, 
>       tf_trapno = 12, tf_err = 0, tf_eip = -1072110632, tf_cs = 8, 
>       tf_eflags = 66182, tf_esp = -1062703744, tf_ss = -911937724})
>     at ../../i386/i386/trap.c:436
> (kgdb) 

Nope, not useful at all really.  Look at the first trap message to see 
where the first one occurred, that'll at least give you a locality.

Just out of curiosity, are either of these systems running with NCR 
controllers?

-- 
\\  Sometimes you're ahead,       \\  Mike Smith
\\  sometimes you're behind.      \\  mike@smith.net.au
\\  The race is long, and in the  \\  msmith@freebsd.org
\\  end it's only with yourself.  \\  msmith@cdrom.com




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199905160318.UAA03441>