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