[issue397] Dragonfly 1.6 - Fatal trap 12

Matthew Dillon dillon at apollo.backplane.com
Fri Jan 12 10:39:37 PST 2007

:Dirk König wrote:
:> Fatal trap 12: page fault while in kernel mode
:> fault virtual address	= 0xeb761
:> fault code		= supervisor read, page not present
:> instruction pointer	= 0x8:0xc00eb647
:> stack pointer		= 0x10:0xc0758a00
:> frame pointer		= 0x10:0xc0758a00
:> code segment 		= base 0x0, limit 0xfffff, type 0x1b
:> 			= DPL 0, pres 1, def 32 1, gran 1
:> processor eflags 	= interrupt enabled, resume, IOPL = 0
:> current process 	= 0 (swapper)
:> current threat		= pri 12
:> kernel: type 12 trap, code=0
:> Stopped at	0xc00eb647:	cmpb	%cs:0x1(%esi),%bl
:this looks like BIOS code to me.  for some reason it is mapped at 0xc00eb000, but %esi is (of course) 0xeb761.  it is missing 0xc0000000 bytes :)  maybe the bios needs to be mapped into a lower memory area?
:  simon

    That is very odd.  It is the BIOS area.  When it makes a BIOS call the
    BIOS is limited to VM86 mode so it doesn't see the full pc, just the 
    16 bit version (and it runs segment-relative of course).

    But the elfags and segment registers are not indicating that it was
    running in VM86 mode, so the kernel wasn't *trying* to run BIOS code
    at that time.

    The failure is somewhere else and it would probably take some sleuthing
    on the kernel stack to find it.

					Matthew Dillon 
					<dillon at backplane.com>

More information about the Bugs mailing list