Help? 6.1-S: Fatal trap 12: page fault while in kernel mode

Gavin Atkinson gavin.atkinson at ury.york.ac.uk
Fri Jun 23 15:29:37 UTC 2006


On Thu, 2006-06-15 at 16:22 -0700, David Wolfskill wrote:
> I had one of these a couple of weeks ago or so; I had been distracted by
> some more urgent matters that came up (the panic was on a machine under
> test; the more urgent matters were little things like needing to deploy
> a handful of resolvers on our network because existing ones were running
> on systems that had provided evidence of being prone to imminent
> failure).
> 
> Anyway:  I updated the 2 boxen under test to 6.1-STABLE as of this
> morning, and finally(!) had a chance to re-try the failing operation.
> 
> It went "kaboom!" again.  :-{  (Well, there's something to be said for
> consistency.  :-})
> 
> It seems to run OK (albeit slowly) for a couple of minutes; then the
> serial console reports:
> 
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 06
> fault virtual address   = 0x0
> fault code              = supervisor read, page not present
> instruction pointer     = 0x20:0x0
> stack pointer           = 0x28:0xf09b3b98
> frame pointer           = 0x28:0xf09b3bcc
> code segment            = base 0x0, limit 0xfffff, type 0x1b
>                         = DPL 0, pres 1, def32 1, gran 1
> processor eflags        = interrupt enabled, resume, IOPL = 0
> current process         = 23782 (ecelerity)
> [thread pid 23782 tid 100120 ]
> Stopped at      0:      *** error reading from address 0 ***
> db> trace
> Tracing pid 23782 tid 100120 td 0xcc445180
> db> 

OK, seeing as nobody has offered any advice, I'll have a go.

Have you got a debug kernel?  If so, get a kernel dump.  Load it into
kgdb.  Chances are "bt" won't work as the instruction pointer is zero,
so instead you need to display the stack directly:

(kgdb) x/80xw 0xf09b3b98

Look for any addresses in the 0xc0xxxxxx range - these will probably be
pointers to kernel functions.  Drop out of kgdb, and try to find out
which functions these belong to:

addr2line 0xc0639bd6 -e kernel.debug
/usr/src/sys/kern/tty.c:1653

You can build up a backtrace and knowledge of atguments given to
functions this way.

Gavin


More information about the freebsd-stable mailing list