Wine VM86 exception handling bug?

Andrey Turkin pancha at
Fri Jun 2 09:14:17 CDT 2006

Hi all!

I think i found a bug in VM86 exception handling (must be regression, i 
Short Wine function flow:

On privileged instruction __wine_enter_vm86 saves vm86 registers in 
CONTEXT and starts raise_segv_exception.
raise_segv_exception routes exception to the INSTR_EmulateInstruction 
and then to winedos I/O emulator, then tries to use 
NtSetContextThread(GetCurrentThread(), CONTEXT). NtSetContextThread 
obviously fails because of VM86 segment values in CONTEXT.

My opinion is that NtSetContextThread call is wrong; __wine_enter_vm86 
would restore vm86 registers correctly. I think i know what is the 
problem; however, I lack experience to fix it myself :)
I need help; any hints would be appreciated.

More information about the wine-devel mailing list