mpack wrote:Addressing beyond the limit for SS:SP would cause a guest crash, but I don't know why it would cause a host triple fault guru meditation, especially when VT-x is in use.
I can only make an educated guess about that: The push to the offset just below 64k (presumably onto an empty 64k stack) will generate a GPF (
General Protection Fault) inside the guest because of the 4k segment limit. Additionally, the guest IDT (Interrupt Descriptor Table) is located right behind the 4k stack segment. I don't see a clean way for a GPF exception handler to solve this, except for an emergency stop. Note that a triple fault guru meditation does not necessarily mean that there has been a triple fault inside the guest.
mpack wrote:Side note: it's a long time since I programmed for DOS, but I don't remember there being any limit except what you could hold in the 16 bit offset register. I assume the limits I'm seeing only exist in the memory management portions of later processors.
Depends on what you call "later".
The GDT (
Global Descriptor Table) is a central structure of the 16-bit and 32-bit
Protected Mode (see the
Segment addressing section of this Wikipedia page for details), starting from the Intel 80286 CPU.