[haiku-development] VirtualBox crash with 32 bit host but not 64 bit host

  • From: Tim Kelly <gtkelly@xxxxxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sun, 20 Dec 2015 10:42:45 -0500

Hi,
I've been able to get a repeatable crash of the Haiku kernel hrev49897 with VirtualBox in 32 bit host mode that does not occur with 64 bit. VB reports Guru Meditation 1155 (VINF_EM_TRIPLE_FAULT). I am using 4 CPUs in the host environment, as I have a dual CPU with dual cores Macbook. The host environment is 4G of RAM.

Over the space of about two days, I collected the VB logs from six crashes. Five were of the form:

Guest CPUM (VCPU 0) state:
eax=80142ec4 ebx=00060380 ecx=829fed30 edx=801d1fd0 esi=00000e6c edi=00000000
eip=80142ec8 esp=81004fc0 ebp=81004fc0 iopl=0 rf nv up ei pl nz na po nc

CPUM: Disas -> VERR_PAGE_TABLE_NOT_PRESENT

Guest CPUM (VCPU 2) state:
eax=00000001 ebx=801d26a0 ecx=829fe8e0 edx=801d2710 esi=00000001 edi=82961084
eip=80099074 esp=81a67d1c ebp=81a67de4 iopl=3 rf nv up di nt zr na pe nc

CPUM: Disas -> VERR_PAGE_TABLE_NOT_PRESENT

Using the Haiku debugger to access the 8xxxxxxx space when running always results in a bad address message from the debugger. Shouldn't the page table exception be handled by the kernel instead of causing VB to terminate the host?


One crash was of the form

Guest CPUM (VCPU 0) state:
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000000 edi=00000000
eip=80138690 esp=00000000 ebp=00000000 iopl=0 nt nv up di pl zr na pe nc

CPUM: 0008:80138690 6a ff push byte 0ffffffffh

without a VCPU 2 printout. The most notable feature of this is that the stack appears to be pointing to null, so the push can't decrement it. Ironically, it appears to be pushing a -1 onto the stack.

The crashes are quite repeatable, and take one to six hours to occur. The choice of running applications does not affect this. This error does not occur with a 64 bit host, but I am under the impression Haiku is a 32 bit OS. This makes me wonder if some 64 bit instructions have snuck in by accident.

It is quite easy to set up VB to share the same disks but have a 32 bit host, if anyone wants to try to replicate this.

tim

--

"Earth provides for every man's needs, but not every man's greed."
-- M. Gandhi

Other related posts: