Subject: vm_fault in pmap_changebit()
To: None <port-i386@NetBSD.ORG>
From: Dave Huang <khym@bga.com>
List: port-i386
Date: 11/10/1997 21:46:11
To help debug my vm_fault panic (described in PR port-i386/4281), Chuck
Cranor suggested I put these debugging messages into i386/pmap.c's
pmap_changebit() (at line 1645 or so):
pte = pmap_pte(pv->pv_pmap, va);
/* DEBUG */
if (pte == NULL || !pmap_pte_v(pte)) {
printf("Bad PV entry discovered: ");
printf("pmap=%p, va=0x%lx\n", pv->pv_pmap, va);
if (pv->pv_pmap) {
if (!pmap_pde_v(pmap_pde(pv->pv_pmap, va)))
printf(" NO page-table!\n");
else
printf(" page table found!\n");
}
}
/* END DEBUG */
*pte = (*pte & maskbits) | setbits;
Well, my machine crashed again, and I got the following message:
Bad PV entry discovered: pmap=0xf0676b80, va=0xefbfd000
NO page-table!
vm_fault(0xf0694a00, 0, 1, 0) -> 5
fatal page fault in supervisor mode
trap type 6 code efbf0000 eip f01a8bc4 cs f01a0008 eflags 10286 cr2 0 cpl e00044c2
panic: trap
And as usual, the fault occurs at the "*pte = (*pte & maskbits) | setbits"
line... pte is a null pointer.
So, does this mean anything to anyone? :) Kernel was compiled from
November 9 source... core dump and kernel with debug symbols available
if anyone wants to see.
Thanks!
--
Name: Dave Huang | Mammal, mammal / their names are called /
INet: khym@bga.com | they raise a paw / the bat, the cat /
FurryMUCK: Dahan | dolphin and dog / koala bear and hog -- TMBG
Dahan: Hani G Y+C 22 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++