Woke up about 0300 with the answer: the text console is wired in with the video framebuffer, so in the process of int10's clearing the screen it erased the stack. I'd have to switch stacks right before the BIOS call.
Thinking about it, I'm not sure GDB is buggy. The failure to show the correct code during BIOS calls could be the fault of QEMU's code that hooks to GDB. One of the NASM bugs is that the
o32 override instruction doesn't get counted by the
assembler, so its
$ pointer is off. That may have been fixed, but
I haven't updated lately, and Debian always lags anyway.
Back to blog or home page
last updated 2011-07-28 22:30:39. served from tektonic.jcomeau.com