[Bug 44485] New: makes Delphi 7 debugger generate new exceptions by itself (regression)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Feb 7 11:11:40 CST 2018


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 at winehq.org
          Reporter: development at 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

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list