pain and agony... a +relay,+seh trace from my cxxexcept problem case:
Greg Turner
gmturner007 at ameritech.net
Thu Oct 3 17:51:29 CDT 2002
OK, here is what looks to me like the relevant stuff... I'm determined to
get this fixed, I "need" this app (ya right... I've got vmware...)
=================>
0807bf40:Ret ws2_32.recv() retval=00000010 ret=410d966a
0807bf40:Call ws2_32.recv(00000174,42a908b0,0000004d,00000000) ret=410d966a
0807bf40:Call ntdll.wine_server_handle_to_fd(00000174,80000000,406f1cec,406f1d54,406f1d64) ret=411976f5
0807bf40:Ret ntdll.wine_server_handle_to_fd() retval=00000000 ret=411976f5
0807bf40:Call kernel32.GetProcessHeap() ret=4119693e
0807bf40:Ret kernel32.GetProcessHeap() retval=403d0000 ret=4119693e
0807bf40:Call ntdll.RtlAllocateHeap(403d0000,00000000,00000008) ret=4119695a
0807bf40:Ret ntdll.RtlAllocateHeap() retval=404d1be8 ret=4119695a
0807bf40:Call kernel32.GetProcessHeap() ret=41196c0c
0807bf40:Ret kernel32.GetProcessHeap() retval=403d0000 ret=41196c0c
0807bf40:Call ntdll.RtlFreeHeap(403d0000,00000000,404d1be8) ret=41196c25
0807bf40:Ret ntdll.RtlFreeHeap() retval=00000001 ret=41196c25
0807bf40:Ret ws2_32.recv() retval=0000004d ret=410d966a
0807bf40:Call msvcrt.malloc(00000008) ret=5f40384f
0807bf40:Call kernel32.GetProcessHeap() ret=40f216bf
0807bf40:Ret kernel32.GetProcessHeap() retval=403d0000 ret=40f216bf
0807bf40:Call ntdll.RtlAllocateHeap(403d0000,00000000,00000008) ret=40f216d6
0807bf40:Ret ntdll.RtlAllocateHeap() retval=404d1be8 ret=40f216d6
0807bf40:Ret msvcrt.malloc() retval=404d1be8 ret=5f40384f
<================
so far, so good, right? Looks like pretty normal stuff going on here;
the exception is raised by proprietary code within starteam, but they
like to catch their own exceptions, I think it's supposed to pass
and be handled. In the debugger, the stack looks great, goes back
cleanly all the way to init.
=================>
0807bf40:Call msvcrt._CxxThrowException(406f1f4c,410dff80) ret=410d4d0a
0807bf40:Call kernel32.RaiseException(e06d7363,00000001,00000003,406f1e24) ret=40f15b9e
trace:seh:EXC_RtlRaiseException code=e06d7363 flags=1 addr=0x401060f4
trace:seh:EXC_RtlRaiseException info[0]=19930520
trace:seh:EXC_RtlRaiseException info[1]=406f1f4c
trace:seh:EXC_RtlRaiseException info[2]=410dff80
trace:seh:EXC_CallHandler calling handler at 0x410de5e6 code=e06d7363 flags=1
0807bf40:Call msvcrt.__CxxFrameHandler(406f1cc4,406f1f68,406f1960,406f1940) ret=4010c420 fs=008f
eax=410dff20 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1f70 edi=406f195c
ebp=406f18a4 esp=406f1860 ds=002b es=002b gs=0000 flags=00000212
0807bf40:Ret msvcrt.__CxxFrameHandler() retval=00000001 ret=4010c420 fs=008f
eax=00000001 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1f70 edi=406f195c
ebp=406f18a4 esp=406f1860 ds=002b es=002b gs=0000 flags=00000212
trace:seh:EXC_CallHandler handler returned 1
<===============
OK, one handler called, ExceptionContinueSearch. now here comes something more
significant....
=============>
trace:seh:EXC_CallHandler calling handler at 0x410de4b4 code=e06d7363 flags=1
0807bf40:Call msvcrt.__CxxFrameHandler(406f1cc4,406f1fc8,406f1960,406f1940) ret=4010c420 fs=008f
eax=410dfc20 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1fd0 edi=406f195c
ebp=406f18a4 esp=406f1860 ds=002b es=002b gs=0000 flags=00000212
trace:seh:cxx_frame_handler handling C++ exception rec 0x406f1cc4 frame 0x406f1fc8 trylevel 0 descr 0x410dfc20
exception type:
flags 0 destr (nil) handler (nil) type info 0x410dff68
0: flags 1 type 0x410e4400 ((nil) .PAVCStCommandExceptionDetected@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
1: flags 1 type 0x410e43e0 ((nil) .PAVCException@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
2: flags 1 type 0x410e4440 ((nil) .PAVCObject@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
3: flags 1 type 0x410e4430 ((nil) .PAX) offset 0 vbase -1,0 size 4 copy ctor (nil)
function descr:
magic 19930520
unwind table: 0x410dfc40 4
0: prev -1 func (nil)
1: prev -1 func (nil)
2: prev 1 func (nil)
3: prev 1 func (nil)
try table: 0x410dfc60 2
0: start 2 end 2 catchlevel 3 catch 0x410dfc88 1
0: flags 0 offset -28 handler 0x410d2b63 type 0x410e43e0 ((nil) .PAVCException@@)
1: start 0 end 0 catchlevel 3 catch 0x410dfc98 2
0: flags 0 offset -24 handler 0x410d2b36 type 0x410e4400 ((nil) .PAVCStCommandExceptionDetected@@)
1: flags 0 offset 0 handler 0x410d2b52 type (nil)
trace:seh:call_catch_block matched type 0x410dff48 in tryblock 1 catchblock 0
<============
allright, obviously we're in cxx_frame_handler, at "normal_handler:". So far,
everyone seems happy. Off we go into call_catch_block
============>
trace:seh:EXC_RtlUnwind code=e06d7363 flags=3
trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=e06d7363 flags=3
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x410de5e6 code=e06d7363 flags=3
0807bf40:Call msvcrt.__CxxFrameHandler(406f1cc4,406f1f68,406f0ea4,406f0dd8) ret=4010c420 fs=008f
eax=410dff20 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1f70 edi=406f0ea0
ebp=406f0da0 esp=406f0d5c ds=002b es=002b gs=0000 flags=00000216
0807bf40:Ret msvcrt.__CxxFrameHandler() retval=00000001 ret=4010c420 fs=008f
eax=00000001 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1f70 edi=406f0ea0
ebp=406f0da0 esp=406f0d5c ds=002b es=002b gs=0000 flags=00000216
trace:seh:EXC_CallHandler handler returned 1
0807bf40:Ret ntdll.RtlUnwind() retval=00000000 ret=40f15d99
<==========
Presumably we're still in call_catch_block, really justin the RtlUnwind parts.
Now the catch block is called...
============>
trace:seh:call_catch_block calling catch block 0x410dfc98 for type 0x410dff48 addr 0x410d2b36 ebp 0x406f1fd4
0807bf40:Call msvcrt.free(404d1be8) ret=5f40388b
0807bf40:Call kernel32.GetProcessHeap() ret=40f21687
0807bf40:Ret kernel32.GetProcessHeap() retval=403d0000 ret=40f21687
0807bf40:Call ntdll.RtlFreeHeap(403d0000,00000000,404d1be8) ret=40f216a0
0807bf40:Ret ntdll.RtlFreeHeap() retval=00000001 ret=40f216a0
0807bf40:Ret msvcrt.free() retval=00000001 ret=5f40388b
0807bf40:Call msvcrt.malloc(00000050) ret=5f40384f
0807bf40:Call kernel32.GetProcessHeap() ret=40f216bf
0807bf40:Ret kernel32.GetProcessHeap() retval=403d0000 ret=40f216bf
0807bf40:Call ntdll.RtlAllocateHeap(403d0000,00000000,00000050) ret=40f216d6
0807bf40:Ret ntdll.RtlAllocateHeap() retval=404d55d8 ret=40f216d6
0807bf40:Ret msvcrt.malloc() retval=404d55d8 ret=5f40384f
0807bf40:Call msvcrt.memcpy(406f1234,42a908b0,00000004) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f1234 ret=410d4a2e
0807bf40:Call msvcrt.memcpy(406f11fc,42a908b4,00000012) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f11fc ret=410d4a2e
0807bf40:Call ntdll.RtlEnterCriticalSection(5f4d0088) ret=5f4020bd
0807bf40:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=5f4020bd
0807bf40:Call ntdll.RtlLeaveCriticalSection(5f4d0088) ret=5f402103
0807bf40:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=5f402103
0807bf40:Call msvcrt.memcpy(42a902c0,5f4d1b58,00000001) ret=5f402676
0807bf40:Ret msvcrt.memcpy() retval=42a902c0 ret=5f402676
0807bf40:Call msvcrt.memcpy(406f1234,42a908c6,00000004) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f1234 ret=410d4a2e
0807bf40:Call msvcrt.memcpy(406f1294,42a908ca,00000004) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f1294 ret=410d4a2e
0807bf40:Call msvcrt.memcpy(406f1290,42a908ce,00000004) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f1290 ret=410d4a2e
0807bf40:Call msvcrt.memcpy(404d5600,42a908d2,00000004) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=404d5600 ret=410d4a2e
0807bf40:Call msvcrt.memcpy(404d55f8,42a908d6,00000008) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=404d55f8 ret=410d4a2e
0807bf40:Call msvcrt.memcpy(406f1234,42a908de,00000004) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f1234 ret=410d4a2e
0807bf40:Call msvcrt.memcpy(406f11f8,42a908e2,00000017) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f11f8 ret=410d4a2e
0807bf40:Call ntdll.RtlEnterCriticalSection(5f4d0088) ret=5f4020bd
0807bf40:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=5f4020bd
0807bf40:Call ntdll.RtlLeaveCriticalSection(5f4d0088) ret=5f402103
0807bf40:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=5f402103
0807bf40:Call msvcrt.memcpy(42a90310,5f4d1b58,00000001) ret=5f402676
0807bf40:Ret msvcrt.memcpy() retval=42a90310 ret=5f402676
0807bf40:Call msvcrt.memcpy(406f122c,42a908f9,00000004) ret=410d4a2e
0807bf40:Ret msvcrt.memcpy() retval=406f122c ret=410d4a2e
0807bf40:Call msvcrt.malloc(00000194) ret=5f40384f
0807bf40:Call kernel32.GetProcessHeap() ret=40f216bf
0807bf40:Ret kernel32.GetProcessHeap() retval=403d0000 ret=40f216bf
0807bf40:Call ntdll.RtlAllocateHeap(403d0000,00000000,00000194) ret=40f216d6
0807bf40:Ret ntdll.RtlAllocateHeap() retval=42aeaf30 ret=40f216d6
0807bf40:Ret msvcrt.malloc() retval=42aeaf30 ret=5f40384f
0807bf40:Call msvcrt.memset(42aeaf30,00000000,00000194) ret=410d3b8b
0807bf40:Ret msvcrt.memset() retval=42aeaf30 ret=410d3b8b
0807bf40:Call msvcrt._CxxThrowException(406f12b0,410dfdf8) ret=410d2f3c
<===============
The handler wants to raise a new exception.
===============>
0807bf40:Call kernel32.RaiseException(e06d7363,00000001,00000003,406f1190) ret=40f15b9e
trace:seh:EXC_RtlRaiseException code=e06d7363 flags=1 addr=0x401060f4
trace:seh:EXC_RtlRaiseException info[0]=19930520
trace:seh:EXC_RtlRaiseException info[1]=406f12b0
trace:seh:EXC_RtlRaiseException info[2]=410dfdf8
trace:seh:EXC_CallHandler calling handler at 0x410de4e6 code=e06d7363 flags=1
0807bf40:Call msvcrt.__CxxFrameHandler(406f1030,406f12c8,406f0ccc,406f0cac) ret=4010c420 fs=008f
eax=410dfce8 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f12d0 edi=406f0cc8
ebp=406f0c10 esp=406f0bcc ds=002b es=002b gs=0000 flags=00000216
0807bf40:Ret msvcrt.__CxxFrameHandler() retval=00000001 ret=4010c420 fs=008f
eax=00000001 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f12d0 edi=406f0cc8
ebp=406f0c10 esp=406f0bcc ds=002b es=002b gs=0000 flags=00000216
trace:seh:EXC_CallHandler handler returned 1
<===============
looks familiar, we're at normal_handler again, and calling call_catch_block once more...?
================>
trace:seh:EXC_CallHandler calling handler at 0x410de4b4 code=e06d7363 flags=1
0807bf40:Call msvcrt.__CxxFrameHandler(406f1030,406f1fc8,406f0ccc,406f0cac) ret=4010c420 fs=008f
eax=410dfc20 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1fd0 edi=406f0cc8
ebp=406f0c10 esp=406f0bcc ds=002b es=002b gs=0000 flags=00000216
trace:seh:cxx_frame_handler handling C++ exception rec 0x406f1030 frame 0x406f1fc8 trylevel 1 descr 0x410dfc20
exception type:
flags 0 destr (nil) handler (nil) type info 0x410dfde0
0: flags 1 type 0x410e4478 ((nil) .PAVCStBaseServerException@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
1: flags 1 type 0x410e4458 ((nil) .PAVCStException@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
2: flags 1 type 0x410e43e0 ((nil) .PAVCException@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
3: flags 1 type 0x410e4440 ((nil) .PAVCObject@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
4: flags 1 type 0x410e4430 ((nil) .PAX) offset 0 vbase -1,0 size 4 copy ctor (nil)
function descr:
magic 19930520
unwind table: 0x410dfc40 4
0: prev -1 func (nil)
1: prev -1 func (nil)
2: prev 1 func (nil)
3: prev 1 func (nil)
try table: 0x410dfc60 2
0: start 2 end 2 catchlevel 3 catch 0x410dfc88 1
0: flags 0 offset -28 handler 0x410d2b63 type 0x410e43e0 ((nil) .PAVCException@@)
1: start 0 end 0 catchlevel 3 catch 0x410dfc98 2
0: flags 0 offset -24 handler 0x410d2b36 type 0x410e4400 ((nil) .PAVCStCommandExceptionDetected@@)
1: flags 0 offset 0 handler 0x410d2b52 type (nil)
0807bf40:Ret msvcrt.__CxxFrameHandler() retval=00000001 ret=4010c420 fs=008f
eax=00000001 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1fd0 edi=406f0cc8
ebp=406f0c10 esp=406f0bcc ds=002b es=002b gs=0000 flags=00000216
trace:seh:EXC_CallHandler handler returned 1
<============
looks like it wasn't interested... Not sure if I really understand what happened there...
===========>
trace:seh:EXC_CallHandler calling handler at 0x410a5add code=e06d7363 flags=1
0807bf40:Call msvcrt.__CxxFrameHandler(406f1030,406f2108,406f0ccc,406f0cac) ret=4010c420 fs=008f
eax=410ab3f8 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f2110 edi=406f0cc8
ebp=406f0c10 esp=406f0bcc ds=002b es=002b gs=0000 flags=00000216
trace:seh:cxx_frame_handler handling C++ exception rec 0x406f1030 frame 0x406f2108 trylevel 1 descr 0x410ab3f8
exception type:
flags 0 destr (nil) handler (nil) type info 0x410dfde0
0: flags 1 type 0x410e4478 ((nil) .PAVCStBaseServerException@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
1: flags 1 type 0x410e4458 ((nil) .PAVCStException@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
2: flags 1 type 0x410e43e0 ((nil) .PAVCException@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
3: flags 1 type 0x410e4440 ((nil) .PAVCObject@@) offset 0 vbase -1,0 size 4 copy ctor (nil)
4: flags 1 type 0x410e4430 ((nil) .PAX) offset 0 vbase -1,0 size 4 copy ctor (nil)
function descr:
magic 19930520
unwind table: 0x410ab418 7
0: prev -1 func (nil)
1: prev 0 func (nil)
2: prev 1 func 0x410a5abd
3: prev 2 func 0x410a5ac6
4: prev 3 func 0x410a5acf
5: prev 0 func (nil)
6: prev -1 func (nil)
try table: 0x410ab450 2
0: start 1 end 4 catchlevel 5 catch 0x410ab478 2
0: flags 0 offset -80 handler 0x41082e43 type 0x410b5070 ((nil) .PAVCException@@)
1: flags 0 offset 0 handler 0x41082e6d type (nil)
1: start 0 end 5 catchlevel 6 catch 0x410ab498 2
0: flags 0 offset -84 handler 0x41082e9c type 0x410b5070 ((nil) .PAVCException@@)
1: flags 0 offset 0 handler 0x41082eb9 type (nil)
trace:seh:call_catch_block matched type 0x410dfd80 in tryblock 0 catchblock 0
<=============
Allright, I'm kind of lost now, but we've obviously found our way back into
normal_handler once more, and this time call_catch_block is going to take some
action, calling back into Starteam once more; first it does the RtlUnwind ritual:
============>
0807bf40:Call ntdll.RtlUnwind(406f2108,00000000,406f1030,00000000) ret=40f15d99
trace:seh:EXC_RtlUnwind code=e06d7363 flags=3
trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=e06d7363 flags=3
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x410de4e6 code=e06d7363 flags=3
0807bf40:Call msvcrt.__CxxFrameHandler(406f1030,406f12c8,406f0210,406f0144) ret=4010c420 fs=008f
eax=410dfce8 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f12d0 edi=406f020c
ebp=406f010c esp=406f00c8 ds=002b es=002b gs=0000 flags=00000202
0807bf40:Ret msvcrt.__CxxFrameHandler() retval=00000001 ret=4010c420 fs=008f
eax=00000001 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f12d0 edi=406f020c
ebp=406f010c esp=406f00c8 ds=002b es=002b gs=0000 flags=00000202
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x410de4b4 code=e06d7363 flags=3
0807bf40:Call msvcrt.__CxxFrameHandler(406f1030,406f1fc8,406f0210,406f0144) ret=4010c420 fs=008f
eax=410dfc20 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1fd0 edi=406f020c
ebp=406f010c esp=406f00c8 ds=002b es=002b gs=0000 flags=00000202
0807bf40:Ret msvcrt.__CxxFrameHandler() retval=00000001 ret=4010c420 fs=008f
eax=00000001 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f1fd0 edi=406f020c
ebp=406f010c esp=406f00c8 ds=002b es=002b gs=0000 flags=00000202
trace:seh:EXC_CallHandler handler returned 1
0807bf40:Ret ntdll.RtlUnwind() retval=00000000 ret=40f15d99
<=============
Allright, here it goes.
==============>
trace:seh:call_catch_block calling catch block 0x410ab478 for type 0x410dfd80 addr 0x41082e43 ebp 0x406f2114
0807bf40:Call ntdll.RtlLeaveCriticalSection(42a00434) ret=41085594
0807bf40:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=41085594
0807bf40:Call msvcrt.clock() ret=40f3e262
0807bf40:Ret msvcrt.clock() retval=0000d354 ret=40f3e262
0807bf40:Call ntdll._ftol() ret=40f3e279
0807bf40:Ret ntdll._ftol() retval=0000d354 ret=40f3e279
0807bf40:Call kernel32.lstrcpynA(406ee63c,42a90310 "Event Handler not found",00002000) ret=4104386c
0807bf40:Ret kernel32.lstrcpynA() retval=406ee63c ret=4104386c
0807bf40:Call kernel32.lstrlenA(406ee63c "Event Handler not found") ret=5f4038e2
0807bf40:Ret kernel32.lstrlenA() retval=00000017 ret=5f4038e2
0807bf40:Call ntdll.RtlEnterCriticalSection(5f4d0088) ret=5f4020bd
0807bf40:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=5f4020bd
0807bf40:Call ntdll.RtlLeaveCriticalSection(5f4d0088) ret=5f402103
0807bf40:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=5f402103
0807bf40:Call msvcrt.memcpy(42a90360,406ee63c,00000017) ret=5f403910
0807bf40:Ret msvcrt.memcpy() retval=42a90360 ret=5f403910
0807bf40:Call msvcrt._CxxThrowException(00000000,00000000) ret=41082e6d
<==============
StarTeam wants to re-raise again. So now, if I understand correctly, they're
going to nest another Raise within the already nested Raise. That's it for Starteam.
More information about the wine-devel
mailing list