TaxCut and C++ exception handling

Ori Pessach mail at oripessach.com
Sat Feb 15 17:28:24 CST 2003


Hello,

I'm trying to run TaxCut under CVS Wine. The install went smoothly, but 
when I try to run the software it locks up before any windows appear. 
 From the trace, it seems that it might be related to exception handling 
in Wine.

The first sign that something is wrong is this:

00000009:Call ntdll.RtlRaiseException(407a2764) ret=40a34052 fs=008f
  eax=780ca51c ebx=40a54c2c ecx=41915e28 edx=4207c450 esi=407a2764 
edi=00000001
  ebp=407a27bc esp=407a2764 ds=002b es=002b gs=0000 flags=00000202
00000009:trace:seh:EXC_RtlRaiseException code=80000100 flags=1 
addr=0x780ca51c
00000009:trace:seh:EXC_RtlRaiseException  info[0]=40a4a400
00000009:trace:seh:EXC_RtlRaiseException  info[1]=40a4aa85
00000009:fixme:seh:EXC_RtlRaiseException call to unimplemented function 
localeconv
0009: queue_exception_event( first=1, 
record={context={flags=00010007,eax=780ca51c,ebx=40a54c2c,ecx=41915e28,edx=4207c450,esi=407a2764,edi=00000001,ebp=407a27bc,eip=40a34052,esp=407a2764,eflags=00000202,cs=0023,ds=002b,es=002b,fs=008f,gs=0000,dr0=4212a2d0,dr1=000003dc,dr2=4011044c,dr3=407a2544,dr6=4206a3e4,dr7=407a244c,float={400ec340,407a25d4,4011044c,00000000,4206fc84,40110431,4206fc84,4206fc84,40110431,4206fc84,4206fc84,407a247c,4212a2d0,40110827,407a2488,42070836,34613034,66346231,40110827,00000000,66346231,40110827,42047f0d,4212a2d0,00000400,40110428,407a25b8,4206a3e4}},rec={code=80000100,flags=1,rec=(nil),addr=0x780ca51c,params={40a4a400,40a4aa85}} 
)
0009: queue_exception_event() = 0 { handle=(nil) }

Then, comes something that looks like uncontrolled recursive behavior:

00000009:trace:seh:EXC_CallHandler calling handler at 0x780e87a6 
code=80000100 flags=1
00000009:Call 
msvcrt.__CxxFrameHandler(407a2764,407a2828,407a2404,407a22ac) 
ret=400c5842 fs=008f
  eax=780ee5e8 ebx=400f9144 ecx=40110428 edx=40110480 esi=407a2764 
edi=400f8f11
  ebp=407a2288 esp=407a225c ds=002b es=002b gs=0000 flags=00000206
00000009:Ret  msvcrt.__CxxFrameHandler() retval=00000001 ret=400c5842 
fs=008f
  eax=00000001 ebx=400f9144 ecx=40110428 edx=40110480 esi=407a2764 
edi=400f8f11
  ebp=407a2288 esp=407a225c ds=002b es=002b gs=0000 flags=00000206
00000009:trace:seh:EXC_CallHandler handler returned 1
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e9f54 
code=80000100 flags=1
00000009:Call 
msvcrt.__CxxFrameHandler(407a2764,407a2854,407a2404,407a22ac) 
ret=400c5842 fs=008f
  eax=780f2358 ebx=400f9144 ecx=40110428 edx=40110480 esi=407a2764 
edi=400f8f11
  ebp=407a2288 esp=407a225c ds=002b es=002b gs=0000 flags=00000206
00000009:Ret  msvcrt.__CxxFrameHandler() retval=00000001 ret=400c5842 
fs=008f
  eax=00000001 ebx=400f9144 ecx=40110428 edx=40110480 esi=407a2764 
edi=400f8f11
  ebp=407a2288 esp=407a225c ds=002b es=002b gs=0000 flags=00000206
00000009:trace:seh:EXC_CallHandler handler returned 1
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e8a1c 
code=80000100 flags=1
00000009:Call 
msvcrt.__CxxFrameHandler(407a2764,407a28ac,407a2404,407a22ac) 
ret=400c5842 fs=008f
  eax=780eeae8 ebx=400f9144 ecx=40110428 edx=40110480 esi=407a2764 
edi=400f8f11
  ebp=407a2288 esp=407a225c ds=002b es=002b gs=0000 flags=00000206
00000009:Ret  msvcrt.__CxxFrameHandler() retval=00000001 ret=400c5842 
fs=008f
  eax=00000001 ebx=400f9144 ecx=40110428 edx=40110480 esi=407a2764 
edi=400f8f11
  ebp=407a2288 esp=407a225c ds=002b es=002b gs=0000 flags=00000206
00000009:trace:seh:EXC_CallHandler handler returned 1
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e8c24 
code=80000100 flags=1
00000009:Call 
msvcrt.__CxxFrameHandler(407a2764,407a2990,407a2404,407a22ac) 
ret=400c5842 fs=008f
  eax=780eefa8 ebx=400f9144 ecx=40110428 edx=40110480 esi=407a2764 
edi=400f8f11
  ebp=407a2288 esp=407a225c ds=002b es=002b gs=0000 flags=00000206
00000009:trace:seh:cxx_frame_handler handling C++ exception rec 
0x407a2764 frame 0x407a2990 trylevel 2 descr 0x780eefa8 nested_frame (nil)
exception type:
flags 78 destr 0x419151b9 handler 0x1 type info 0x1f
00000009:trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 
addr=0x40a38385
00000009:trace:seh:EXC_RtlRaiseException  info[0]=00000000
00000009:trace:seh:EXC_RtlRaiseException  info[1]=0000001f
0009: queue_exception_event( first=1, 
record={context={flags=00000000,eax=0000001f,ebx=40a54c2c,ecx=40110428,edx=4011045e,esi=00000000,edi=407a2814,ebp=407a1db4,eip=40a38385,esp=407a1da4,eflags=00010212,cs=0023,ds=002b,es=002b,fs=008f,gs=0000,dr0=00000000,dr1=00000000,dr2=00000000,dr3=00000000,dr6=00000000,dr7=00000000,float={00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000}},rec={code=c0000005,flags=0,rec=(nil),addr=0x40a38385,params={0,1f}} 
)
0009: queue_exception_event() = 0 { handle=(nil) }

And then:

00000009:trace:seh:EXC_CallHandler calling handler at 0x400c5798 
code=c0000005 flags=0
00000009:trace:seh:EXC_CallHandler handler returned 2
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e87a6 
code=c0000005 flags=10
00000009:Call 
msvcrt.__CxxFrameHandler(406909d0,407a2828,40690a44,40690960) 
ret=400c5842 fs=008f
  eax=780ee5e8 ebx=400f9144 ecx=40110428 edx=40110481 esi=406909d0 
edi=400f8f11
  ebp=4069093c esp=40690910 ds=002b es=002b gs=0000 flags=00000212
00000009:Ret  msvcrt.__CxxFrameHandler() retval=00000001 ret=400c5842 
fs=008f
  eax=00000001 ebx=400f9144 ecx=40110428 edx=40110481 esi=406909d0 
edi=400f8f11
  ebp=4069093c esp=40690910 ds=002b es=002b gs=0000 flags=00000212
00000009:trace:seh:EXC_CallHandler handler returned 1
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e9f54 
code=c0000005 flags=10
00000009:Call 
msvcrt.__CxxFrameHandler(406909d0,407a2854,40690a44,40690960) 
ret=400c5842 fs=008f
  eax=780f2358 ebx=400f9144 ecx=40110428 edx=40110481 esi=406909d0 
edi=400f8f11
  ebp=4069093c esp=40690910 ds=002b es=002b gs=0000 flags=00000212
00000009:Ret  msvcrt.__CxxFrameHandler() retval=00000001 ret=400c5842 
fs=008f
  eax=00000001 ebx=400f9144 ecx=40110428 edx=40110481 esi=406909d0 
edi=400f8f11
  ebp=4069093c esp=40690910 ds=002b es=002b gs=0000 flags=00000212
00000009:trace:seh:EXC_CallHandler handler returned 1
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e8a1c 
code=c0000005 flags=10
00000009:Call 
msvcrt.__CxxFrameHandler(406909d0,407a28ac,40690a44,40690960) 
ret=400c5842 fs=008f
  eax=780eeae8 ebx=400f9144 ecx=40110428 edx=40110481 esi=406909d0 
edi=400f8f11
  ebp=4069093c esp=40690910 ds=002b es=002b gs=0000 flags=00000212
00000009:Ret  msvcrt.__CxxFrameHandler() retval=00000001 ret=400c5842 
fs=008f
  eax=00000001 ebx=400f9144 ecx=40110428 edx=40110481 esi=406909d0 
edi=400f8f11
  ebp=4069093c esp=40690910 ds=002b es=002b gs=0000 flags=00000212
00000009:trace:seh:EXC_CallHandler handler returned 1
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e8c24 
code=c0000005 flags=10
00000009:Call 
msvcrt.__CxxFrameHandler(406909d0,407a2990,40690a44,40690960) 
ret=400c5842 fs=008f
  eax=780eefa8 ebx=400f9144 ecx=40110428 edx=40110481 esi=406909d0 
edi=400f8f11
  ebp=4069093c esp=40690910 ds=002b es=002b gs=0000 flags=00000212
00000009:Call kernel32.TlsGetValue(00000002) ret=40a4961a
00000009:Ret  kernel32.TlsGetValue() retval=4028c448 ret=40a4961a
00000009:trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 
addr=0x40a389cc
00000009:trace:seh:EXC_RtlRaiseException  info[0]=00000000
00000009:trace:seh:EXC_RtlRaiseException  info[1]=0000001c
0009: queue_exception_event( first=1, 
record={context={flags=00000000,eax=4028c448,ebx=40a54c2c,ecx=40110428,edx=00000002,esi=00000000,edi=780eefa8,ebp=40690484,eip=40a389cc,esp=40690474,eflags=00010206,cs=0023,ds=002b,es=002b,fs=008f,gs=0000,dr0=00000000,dr1=00000000,dr2=00000000,dr3=42062320,dr6=400e5fc4,dr7=42062320,float={00000000,00000000,00000000,00000000,42062320,40690338,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,42062320,40690374,00000000,42062320,40690380,00000000,42062320,4069038c,40690390}},rec={code=c0000005,flags=0,rec=(nil),addr=0x40a389cc,params={0,1c}} 
)
0009: queue_exception_event() = 0 { handle=(nil) }


Followed by:

00000009:trace:seh:EXC_CallHandler calling handler at 0x400c5798 
code=c0000005 flags=0
00000009:trace:seh:EXC_CallHandler handler returned 2
00000009:trace:seh:EXC_CallHandler calling handler at 0x400c5798 
code=c0000005 flags=10
00000009:trace:seh:EXC_CallHandler handler returned 2
00000009:trace:seh:EXC_CallHandler calling handler at 0x780e87a6 
code=c0000005 flags=10
00000009:Call 
msvcrt.__CxxFrameHandler(4068fe48,407a2828,4068febc,4068fdd8) 
ret=400c5842 fs=008f
  eax=780ee5e8 ebx=400f9144 ecx=40110428 edx=40110481 esi=4068fe48 
edi=400f8f11
  ebp=4068fdb4 esp=4068fd88 ds=002b es=002b gs=0000 flags=00000212

The pattern that strikes me as odd is how the message: 
"trace:seh:EXC_CallHandler calling... flags=0" keeps repeating, every 
time adding one more iteration. This seems to go on forever (or for 
about a million lines of log messages).

Does this sound familiar to anyone? Any ideas on where to start looking?

Thanks,

-Ori Pessach




More information about the wine-devel mailing list