https://bugs.winehq.org/show_bug.cgi?id=44485
Bug ID: 44485 Summary: makes Delphi 7 debugger generate new exceptions by itself (regression) Product: Wine Version: unspecified Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: development@winomega.com Distribution: ---
Created attachment 60433 --> https://bugs.winehq.org/attachment.cgi?id=60433 WINEDEBUG=+seh
Starting with commit a75e3f734d32bd98df9017f1a94819d2b6dca85d, the Delphi 7 debugger behaves erratically after catching an exception generated by the debugged program. It generates new floating point arithmetic exceptions, making debugging impossible and forces the debugger application to abort.
The test program is a trivial application which raises an exception when clicking on a button.
I'm attaching a WINEDEBUG=+seh log. Also, here's an annotated excerpt describing what I'm doing when each of the traces show up:
I start the program and click on the button. Then get this:
trace:seh:raise_exception code=eedfade flags=1 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=00450767 trace:seh:raise_exception info[1]=00473dbc trace:seh:raise_exception info[2]=004736c0 trace:seh:raise_exception info[3]=00426c58 trace:seh:raise_exception info[4]=0033ef44 trace:seh:raise_exception info[5]=0033ef08 trace:seh:raise_exception info[6]=0033edc4 trace:seh:raise_exception eax=7b428e39 ebx=00000018 ecx=0033ed30 edx=0033eda8 esi=0033ef08 edi=0033ef44 trace:seh:raise_exception ebp=0033ed88 esp=0033ed04 cs=0023 ds=13002b es=4d43002b fs=0063 gs=006b flags=00000212
I press F9 (run) to resume execution. Then get these:
trace:seh:call_stack_handlers calling handler at 0x433637 code=eedfade flags=1 trace:seh:call_stack_handlers handler at 0x433637 returned 1 trace:seh:call_stack_handlers calling handler at 0x433648 code=eedfade flags=1 trace:seh:__regs_RtlUnwind code=eedfade flags=3 trace:seh:__regs_RtlUnwind calling handler at 0x7bc81710 code=eedfade flags=3 trace:seh:__regs_RtlUnwind handler at 0x7bc81710 returned 1 trace:seh:__regs_RtlUnwind calling handler at 0x433637 code=eedfade flags=3 trace:seh:raise_exception code=eedfae1 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0043362c trace:seh:raise_exception eax=7b428e39 ebx=0043362c ecx=0033e3d0 edx=0033e448 esi=00000000 edi=0033ed1c trace:seh:raise_exception ebp=0033e428 esp=0033e3a4 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000212 trace:seh:__regs_RtlUnwind handler at 0x403844 returned 1 trace:seh:raise_exception code=eedfae0 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0043364d trace:seh:raise_exception eax=7b428e39 ebx=0043364d ecx=0033e890 edx=0033e90c esi=00000000 edi=0033f104 trace:seh:raise_exception ebp=0033e8e8 esp=0033e864 cs=330023 ds=002b es=002b fs=0063 gs=006b flags=00000212 trace:seh:raise_exception code=c0000092 flags=0 addr=0x7ecdb6be ip=7ecdb6c1 tid=0031 trace:seh:raise_exception eax=00117f68 ebx=7ed32000 ecx=0013e398 edx=0013e398 esi=0033dc40 edi=00117f68 trace:seh:raise_exception ebp=0033db98 esp=0033db70 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010202 trace:seh:call_stack_handlers calling handler at 0x44f399 code=c0000092 flags=0 trace:seh:call_stack_handlers handler at 0x44f399 returned 1 trace:seh:call_stack_handlers calling handler at 0x44f467 code=c0000092 flags=0 trace:seh:call_stack_handlers handler at 0x44f467 returned 1 trace:seh:call_stack_handlers calling handler at 0x403664 code=c0000092 flags=0 trace:seh:call_stack_handlers handler at 0x403664 returned 1 trace:seh:call_stack_handlers calling handler at 0x433637 code=c0000092 flags=0 trace:seh:call_stack_handlers handler at 0x433637 returned 1 trace:seh:call_stack_handlers calling handler at 0x433648 code=c0000092 flags=0 trace:seh:raise_exception code=eedfae4 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0033d84c trace:seh:raise_exception info[1]=00473dfc trace:seh:raise_exception eax=7b428e39 ebx=00000004 ecx=0033d690 edx=0033d70c esi=0033d84c edi=0033db18 trace:seh:raise_exception ebp=0033d6e8 esp=0033d664 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000212
A MessageBox is shown: "Debugger Exception Notification: Project xxx.exe raised exception class EInvalidOp with message 'Invalid floating point operation'. Process stopped. Use Step or Run to continue."
I click OK.
Debugger stops at vcl/Controls.pas class, at CallWindowProc; it appears as if the exception is triggered in CallWindowProc itself, but I can't tell for sure as the debugger environment is unreliable (if I were to single-step, it keeps triggering new exceptions).
I press F9 again....
trace:seh:__regs_RtlUnwind code=c0000092 flags=2 trace:seh:__regs_RtlUnwind calling handler at 0x7bc81710 code=c0000092 flags=2 trace:seh:__regs_RtlUnwind handler at 0x7bc81710 returned 1 trace:seh:__regs_RtlUnwind calling handler at 0x44f399 code=c0000092 flags=2 trace:seh:raise_exception code=eedfae1 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0044f33f trace:seh:raise_exception eax=7b428e39 ebx=0044f33f ecx=0033d1b0 edx=0033d228 esi=00000000 edi=0033db18 trace:seh:raise_exception ebp=0033d208 esp=0033d184 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000216 trace:seh:__regs_RtlUnwind handler at 0x403844 returned 1 trace:seh:__regs_RtlUnwind calling handler at 0x44f467 code=c0000092 flags=2 trace:seh:raise_exception code=eedfae1 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0044f453 trace:seh:raise_exception eax=7b428e39 ebx=0044f453 ecx=0033d1b0 edx=0033d228 esi=00000000 edi=0033db18 trace:seh:raise_exception ebp=0033d208 esp=0033d184 cs=110023 ds=002b es=33002b fs=0063 gs=7bc8006b flags=00000216 trace:seh:__regs_RtlUnwind handler at 0x403844 returned 1 trace:seh:__regs_RtlUnwind calling handler at 0x403664 code=c0000092 flags=2 trace:seh:raise_exception code=eedfae1 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=00403669 trace:seh:raise_exception eax=7b428e39 ebx=00403669 ecx=0033d1b0 edx=0033d228 esi=00000000 edi=0033db18 trace:seh:raise_exception ebp=0033d208 esp=0033d184 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000216 trace:seh:__regs_RtlUnwind handler at 0x403844 returned 1 trace:seh:__regs_RtlUnwind calling handler at 0x433637 code=c0000092 flags=2 trace:seh:raise_exception code=eedfae1 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0043362c trace:seh:raise_exception eax=7b428e39 ebx=0043362c ecx=0033d1b0 edx=0033d228 esi=00000000 edi=0033db18 trace:seh:raise_exception ebp=0033d208 esp=0033d184 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000216 trace:seh:__regs_RtlUnwind handler at 0x403844 returned 1 trace:seh:raise_exception code=eedfae0 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0043364d trace:seh:raise_exception eax=7b428e39 ebx=0043364d ecx=0033d670 edx=0033d6ec esi=00000000 edi=0033fb94 trace:seh:raise_exception ebp=0033d6c8 esp=0033d644 cs=330023 ds=002b es=002b fs=0063 gs=006b flags=00000216 trace:seh:raise_exception code=c0000092 flags=0 addr=0x7ece39b7 ip=7ece39d6 tid=0031 trace:seh:raise_exception eax=00000003 ebx=7ed32000 ecx=7b43c5ac edx=00000000 esi=00141214 edi=00000001 trace:seh:raise_exception ebp=0033ca18 esp=0033c8a0 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010297 trace:seh:call_stack_handlers calling handler at 0x44f399 code=c0000092 flags=0 trace:seh:call_stack_handlers handler at 0x44f399 returned 1 trace:seh:call_stack_handlers calling handler at 0x44f467 code=c0000092 flags=0 trace:seh:call_stack_handlers handler at 0x44f467 returned 1 trace:seh:call_stack_handlers calling handler at 0x403664 code=c0000092 flags=0 trace:seh:call_stack_handlers handler at 0x403664 returned 1 trace:seh:call_stack_handlers calling handler at 0x44f159 code=c0000092 flags=0 trace:seh:raise_exception code=eedfae4 flags=0 addr=0x7b43c5ac ip=7b43c5ac tid=0031 trace:seh:raise_exception info[0]=0033c57c trace:seh:raise_exception info[1]=00473e40 trace:seh:raise_exception eax=7b428e39 ebx=00000004 ecx=0033c3c0 edx=0033c43c esi=0033c57c edi=0033c848 trace:seh:raise_exception ebp=0033c418 esp=0033c394 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000212
Again: "Debugger Exception Notification: Project xxx.exe raised exception class EInvalidOp with message 'Invalid floating point operation'. Process stopped. Use Step or Run to continue."
I press OK.
Debugged test app is terminated this time. Before exitting a seh error shows up:
err:seh:setup_exception_record stack overflow 952 bytes in thread 0031 eip f73fb162 esp 00240f78 stack 0x240000-0x241000-0x340000