Code: Select all
bx_dbg_read_linear: physical memory read error (phy=0xc0001f02, lin=0xc0001f02
Ok. Just a second before this, the OS pulls a null pointer from the scheduler (meaning; no available processes to run)
So I'm not very suprised that it barfs when it references the null and slams the result into cr3.
BUT
Code: Select all
void schedule()
{
cp = runque->pop();
runque->add(cp);
if (cp == 0)
cp = idler;
printf("CP: 0x%08x\n",cp);
}
In bochs what I see is
Code: Select all
Process id 2 terminated.
CP: 0x00000000
Bochs throws the aforementioned error.
in VMWare it shows the correct idle thread pointer
Code: Select all
Process id 2 terminated.
CP: 0xc03fdba0
CP: 0xc03fdba0
CP: 0xc03fdba0
<repeat forever>