http://bugs.winehq.org/show_bug.cgi?id=23222
--- Comment #6 from Anastasius Focht focht@gmx.net 2010-06-19 03:24:18 --- Hello,
looks like Wine doesn't process the trace/breakpoint trap signal correctly on your Linux distro (openSUSE xx?).
"bad" sequence (your system):
--- snip --- 0009:Starting process L"Z:\home\ole\Desktop\die\DiE.exe" (entryproc=0x535e0c) 0009:Call KERNEL32.GetProcAddress(51fc92b3,004003df "") ret=00535e6a 0009:Ret KERNEL32.GetProcAddress() retval=00000000 ret=00535e6a 0009:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7bc7134a ip=7bc7134a tid=0009 0009:trace:seh:raise_exception info[0]=00000000 0009:trace:seh:raise_exception info[1]=00536000 0009:trace:seh:raise_exception eax=0033fa70 ebx=7bca7ff4 ecx=00536000 edx=0033fe9c esi=0033fe44 edi=0033fb78 0009:trace:seh:raise_exception ebp=0033feb8 esp=0033fa40 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00210246 0009:trace:seh:call_vectored_handlers calling handler at 0x7e2c13b0 code=c0000005 flags=0 0009:trace:seh:call_vectored_handlers handler at 0x7e2c13b0 returned 0 0009:trace:seh:call_stack_handlers calling handler at 0x7bc88440 code=c0000005 flags=0 0009:trace:seh:__regs_RtlUnwind code=c0000005 flags=2 0009:trace:seh:__regs_RtlUnwind calling handler at 0x7bc71040 code=c0000005 flags=2 0009:trace:seh:__regs_RtlUnwind handler at 0x7bc71040 returned 1 0009:trace:seh:raise_exception code=c0000005 flags=0 addr=0x536000 ip=00536000 tid=0009 0009:trace:seh:raise_exception info[0]=00000000 0009:trace:seh:raise_exception info[1]=00536000 0009:trace:seh:raise_exception eax=004b8001 ebx=ce6f3711 ecx=00000000 edx=000000b2 esi=7ffdf000 edi=00535e0c 0009:trace:seh:raise_exception ebp=0033feb8 esp=0033fe9c cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00210286 0009:trace:seh:call_vectored_handlers calling handler at 0x7e2c13b0 code=c0000005 flags=0 0009:trace:seh:call_vectored_handlers handler at 0x7e2c13b0 returned 0 0009:trace:seh:call_stack_handlers calling handler at 0x535023 code=c0000005 flags=0 0009:Call KERNEL32.GetProcAddress(3dbe146c,00400775 "\xc8\xfcH\x0c\x8dg\x06\x0f\xb6\xe1\x15Y\xeb\x18\xca\xeb\x14$&\x06\x98\x01?\x05@;\x0f\x85Y\xf42\r\x0f\x1e\x14l\x10\x8b\x90\x86\x8b\xda\x8e\x81\x02\xef\xde\x81\xfe~") ret=00535044 0009:Ret KERNEL32.GetProcAddress() retval=00000000 ret=00535044 --- snip ---
The first exception after GetProcAddress() should be a single step exception because an "int 1" instruction is encountered. The app installed an SEH at 0x535023 that should get called at this point.
With your system, either in ntdll's raise_trap_exception(), raise_exception() or surrounding code, Wine itself causes a page fault, swallowing the single step exception internally. Because the app's SEH is never called, the execution resumes at next instruction causing "runaway" execution. The app code following after "int 1" is meaningless, it should never been reached. Execution reaches unmapped area, causing another page fault (0x536000) where it goes completely out of hands (due to false assumptions).
"good" sequence (my system, Fedora 12):
--- snip --- 003b:Starting process L"C:\die\die.exe" (entryproc=0x535e0c) 003b:Call KERNEL32.GetProcAddress(51fc92b3,004003df "") ret=00535e6a 003b:Ret KERNEL32.GetProcAddress() retval=00000000 ret=00535e6a 003b:trace:seh:raise_exception code=80000004 flags=0 addr=0x535f9f ip=00535f9f tid=003b 003b:trace:seh:raise_exception eax=004b8001 ebx=ce672411 ecx=00000000 edx=000000b2 esi=7ffdf000 edi=00535e0c 003b:trace:seh:raise_exception ebp=0032fea8 esp=0032fe8c cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000206 003b:trace:seh:call_vectored_handlers calling handler at 0x798370f0 code=80000004 flags=0 003b:trace:seh:call_vectored_handlers handler at 0x798370f0 returned 0 003b:trace:seh:call_stack_handlers calling handler at 0x535023 code=80000004 flags=0 003b:Call KERNEL32.GetProcAddress(3dbe146c,00400775 "\xc8\xfcH\x0c\x8dg\x06\x0f\xb6\xe1\x15Y\xeb\x18\xca\xeb\x14$&\x06\x98\x01?\x05@;\x0f\x85Y\xf42\r\x0f\x1e\x14l\x10\x8b\x90\x86\x8b\xda\x8e\x81\x02\xef\xde\x81\xfe~") ret=00535044 003b:Ret KERNEL32.GetProcAddress() retval=00000000 ret=00535044 003b:trace:seh:raise_exception code=80000004 flags=0 addr=0x5350b2 ip=005350b2 tid=003b 003b:trace:seh:raise_exception eax=00000386 ebx=7bc90286 ecx=005350d2 edx=c0000135 esi=0032fe34 edi=0032fe8c 003b:trace:seh:raise_exception ebp=0032fa48 esp=0032fe8c cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000213 003b:trace:seh:call_vectored_handlers calling handler at 0x798370f0 code=80000004 flags=0 003b:trace:seh:call_vectored_handlers handler at 0x798370f0 returned 0 003b:trace:seh:call_stack_handlers calling handler at 0x5350d2 code=80000004 flags=0 ... --- snip ---
Maybe another Wine user with openSUSE could confirm this problem, specifying exact Kernel, Glibc, Gcc version and compile flags used to build Wine (if any special for distro).
Regards