No subject


Tue Aug 30 17:20:58 CDT 2005


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,...

-- 
gmt

"If ye love wealth better than liberty, the tranquility
of servitude better than the animating contest of freedom,
go home from us in peace. We ask not your counsels or your
arms. Crouch down and lick the hands, which feed you. May
your chains set lightly upon you, and may posterity forget
that ye were our countrymen." 

-Samuel Adams




More information about the wine-devel mailing list