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.
From here on out, it's all wine. This is where TSHTF. Note that this time,
the arguments to ThrowException are both NULL... ostensibly (to me ;) this is the root of the problem.
==============> 0807bf40:Call kernel32.RaiseException(e06d7363,00000001,00000003,406f0530) 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]=00000000 trace:seh:EXC_RtlRaiseException info[2]=00000000 <=============
info[1] and [2] come from the ThrowException arguments (NULL, and NULL of course). At this point, in cxx_excpeption_handler, info[2] becomes exc_type, and gets deferenced:
exc_type = (cxx_exception_type *)rec->ExceptionInformation[2]; if (rec->ExceptionCode != CXX_EXCEPTION) goto normal_handler; if (rec->ExceptionInformation[0] != CXX_FRAME_MAGIC) goto normal_handler; if (exc_type->custom_handler) <<<<<<<<<< SEGFAULT on NULL pointer deference here
Now chaos ensues:
===============> trace:seh:EXC_CallHandler calling handler at 0x410a5add code=e06d7363 flags=1 0807bf40:Call msvcrt.__CxxFrameHandler(406f03d0,406f2108,406f006c,406f004c) ret=4010c420 fs=008f eax=410ab3f8 ebx=40149d30 ecx=401614a8 edx=00000034 esi=406f2110 edi=406f0068 ebp=406effb0 esp=406eff6c ds=002b es=002b gs=0000 flags=00000216 trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x40f159a3 trace:seh:EXC_RtlRaiseException info[0]=00000000 trace:seh:EXC_RtlRaiseException info[1]=00000008 trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=0 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x410a5add code=c0000005 flags=10 0807bf40:Call msvcrt.__CxxFrameHandler(405e09d8,406f2108,405e0a44,405e099c) ret=4010c420 fs=008f eax=410ab3f8 ebx=40149d30 ecx=401614a8 edx=00000035 esi=406f2110 edi=00000004 ebp=405e0900 esp=405e08bc ds=002b es=002b gs=0000 flags=00000212 trace:seh:cxx_frame_handler handling C++ exception rec 0x405e09d8 frame 0x406f2108 trylevel 5 descr 0x410ab3f8 exception type: trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x40f151f5 trace:seh:EXC_RtlRaiseException info[0]=00000000 trace:seh:EXC_RtlRaiseException info[1]=0000000c trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=0 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=10 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x410a5add code=c0000005 flags=10 0807bf40:Call msvcrt.__CxxFrameHandler(405dfd68,406f2108,405dfdd4,405dfd2c) ret=4010c420 fs=008f eax=410ab3f8 ebx=40149d30 ecx=401614a8 edx=00000035 esi=406f2110 edi=00000004 ebp=405dfc90 esp=405dfc4c ds=002b es=002b gs=0000 flags=00000212 trace:seh:cxx_frame_handler handling C++ exception rec 0x405dfd68 frame 0x406f2108 trylevel 5 descr 0x410ab3f8 exception type: trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x40f151f5 trace:seh:EXC_RtlRaiseException info[0]=00000000 trace:seh:EXC_RtlRaiseException info[1]=0000021e trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=0 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=10 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=10 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x410a5add code=c0000005 flags=10 0807bf40:Call msvcrt.__CxxFrameHandler(405df0f8,406f2108,405df164,405df0bc) ret=4010c420 fs=008f eax=410ab3f8 ebx=40149d30 ecx=401614a8 edx=00000035 esi=406f2110 edi=00000004 ebp=405df020 esp=405defdc ds=002b es=002b gs=0000 flags=00000212 trace:seh:cxx_frame_handler handling C++ exception rec 0x405df0f8 frame 0x406f2108 trylevel 5 descr 0x410ab3f8 exception type: trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x40f151f5 trace:seh:EXC_RtlRaiseException info[0]=00000000 trace:seh:EXC_RtlRaiseException info[1]=0000021e trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=0 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=10 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=10 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x4010c310 code=c0000005 flags=10 trace:seh:EXC_CallHandler handler returned 2 trace:seh:EXC_CallHandler calling handler at 0x410a5add code=c0000005 flags=10 <============
and so on. What have we learned, except that StarTeam was probably written in Visual Basic? Not sure. I guess I need to focus on: "where are the NULL's passed to ThrowException coming from?"?? Or is there something more obvious going on here that I'm to ign'ant to grok?
thanks for your help,...
pain... agony... cxxexcept...
This looks like a fine porn SPAM! :)))
On Thursday 03 October 2002 05:51 pm, Greg Turner wrote:
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...)
[SNIP]
and so on. What have we learned, except that StarTeam was probably written in Visual Basic? Not sure. I guess I need to focus on: "where are the NULL's passed to ThrowException coming from?"?? Or is there something more obvious going on here that I'm to ign'ant to grok?
thanks for your help,...
Rolling around in CVS, I've discovered that StarTeam works until this patch:
http://www.winehq.com/hypermail/wine-cvs/2002/09/0157.html
after that, it's broken, initially in a nicer way that doesn't involve infinite recursion in the exception handlers (XBadRequest or something like that, and a nice clean crash). Not sure when it makes the transition to utter chaos in the exception handling....
FYI, this is an MFC42 app, and the last thing it does before TSHTF is to close down a dialog window in the WIZARD_97 style. I had to use native comctl32/commctrl to use it at all, (even when it worked otherwise, presumably because of the WIZARD_97 business). The patched code gets called during the DestroyWindow processing; no failure occurs, however, until control returns to StarTeam's "native" code.
still hoping for a magical fix from some wisened guru-type,