winedos interrupts getting lost.

Peter Dons Tychsen donpedro at
Sun Oct 19 21:54:08 CDT 2008


It starting with me trying to figure out why i was loosing keyboard
events in winedos.

1) I then traced the keyboard events to a call to signal(SIGUSR2) in
function DOSVM_QueueEvent().

2) The signal() triggers code in ntdll, which generates an exception
EXCEPTION_VM86_STI for the current vm86 context.

3) The exception is supposed to trigger exception_handler(), which will 
then handle the keyboard event, by kicking the event queue.

This never happens however, as the mechanism stops working very quickly.

I found out the code gets to raise_vm86_sti_exception in ntdll, and then
stops. ntdll_get_thread_data()->vm86_ptr is NULL, so the STI exception
is never signaled.

Does anyone know more about the exception subsystem, and what could be
causing this kind of strange behavior?

I can mention that the system can generate EXCEPTION_VM86_INTx
exceptions successfully, but fails to execute the EXCEPTION_VM86_STI.



More information about the wine-devel mailing list