Hello. 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. Thanks, /pedro