DragonFly bugs List (threaded) for 2007-01
Re: [issue397] Dragonfly 1.6 - Fatal trap 12
: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?
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.