Messages in this thread | | | Date | Sun, 7 Apr 1996 11:57:56 +0200 | From | Morten Welinder <> | Subject | Re: Crash report #1 with SADISTIC_KMALLOC/no modules |
| |
[...]
> The "Code:" part disassembles to > > repz movsl %ds:(%esi),%es:(%edi) > andl $0x3,%ebx > movl %ebx,%ecx > repz movsb %ds:(%esi),%es:(%edi) > popl %es > pushl $0x0 > movl 0x20(%esp,1),%esi
[...]
> Ok, so far so good. HOWEVER, that instruction then traps with: > > Unable to handle kernel paging request at virtual address 00000004 > >even though virtual address 0x00000004 never even enters the picture. In >short, that particular instruction should under no circumstances be able >to trap with that address.
This is not quite true. I can see at least two possibilities where the instruction could validly generate the page fault:
1. The page directory or some page table contains bogus information. This includes entries not flushed correctly.
2. A non-sequential event (i.e., an interrupt) hides the real cause.
3. Something trashes [part of] the register dump before it gets dumped.
I don't really believe in 2 and 3, but 1 could generate some really nasty-to-find, long-hiding, "non-deterministic" crashes.
If I remember things right then CR2 contains a physical address, not a linear one. Something could also have gone wrong with the translation before the printing.
Morten
| |