Subject: Re: port-i386/7971: fatal page fault in supervisor mode
To: None <navas@bayarea.net>
From: Chris G. Demetriou <cgd@netbsd.org>
List: netbsd-bugs
Date: 07/12/1999 13:39:04
George Navas <navas@bayarea.net> writes:
> #3  0xf022315d in trap (frame={tf_es = -261685232, tf_ds = -115933168, tf_edi = 0,
>       tf_esi = 1761607680, tf_ebp = -115926116, tf_ebx = 0, tf_edx = 12,
>       tf_ecx = -262143871, tf_eax = -262143871, tf_trapno = 6, tf_err = 0,
>       tf_eip = -266825337, tf_cs = 8, tf_eflags = 66118, tf_esp = -261566604,
>       tf_ss = -261551048, tf_vm86_es = 0, tf_vm86_ds = -115926096,
>       tf_vm86_fs = -266841793, tf_vm86_gs = 1761607680})
>     at ../../../../arch/i386/i386/trap.c:310            

It would be much nicer if you 'set radix 16' before generating your
traces, and, also, when you encounter a trap like this _at least_
include information about the function that the trap occurred in.

That can be done (for the i386) by noting the value of 'eip' printed
in the trap message or in the frame, and then using gdb to
'list *<that value>' or 'disass <that value>'

In the case of the message you provided, that's:

	0xf0189187

so you'd run gdb on your kernel (preferably the kernel with debugging
symbols, if you compiled one), and say:

	disass 0xf0189187
	list *0xf0189187

If using disass, just provide the function name, if using list (i
think this might be only possible if you're using a kernel compiled
with -g) provide any information it supplies.


cgd
-- 
Chris Demetriou - cgd@netbsd.org - http://www.netbsd.org/People/Pages/cgd.html
Disclaimer: Not speaking for NetBSD, just expressing my own opinion.