Bug in cxx_frame_handler

Robert Shearman R.J.Shearman at warwick.ac.uk
Fri Oct 24 08:30:50 CDT 2003


Hi,

I believe there is a bug in cxx_frame_handler which causes an infinite loop 
of exceptions I believe the offending lines are 359-364.

BTW, original exception was a call to NULL.

Wine Trace:
trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=(nil)
trace:seh:EXC_RtlRaiseException  info[0]=00000000
trace:seh:EXC_RtlRaiseException  info[1]=00000000
trace:seh:EXC_CallHandler calling handler at 0x1019c7d code=c0000005 flags=0
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x5f492e0a code=c0000005 flags=0
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x5f492d82 code=c0000005 flags=0
trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x40774fa4
trace:seh:EXC_RtlRaiseException  info[0]=00000000
trace:seh:EXC_RtlRaiseException  info[1]=0000001c
trace:seh:EXC_CallHandler calling handler at 0x401a6120 code=c0000005 flags=0
trace:seh:EXC_CallHandler handler returned 2
trace:seh:EXC_CallHandler calling handler at 0x1019c7d code=c0000005 flags=10
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x5f492e0a code=c0000005 flags=10
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x5f492d82 code=c0000005 flags=10
trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x40774fa4
trace:seh:EXC_RtlRaiseException  info[0]=00000000
trace:seh:EXC_RtlRaiseException  info[1]=0000001c
trace:seh:EXC_CallHandler calling handler at 0x401a6120 code=c0000005 flags=0
trace:seh:EXC_CallHandler handler returned 2
trace:seh:EXC_CallHandler calling handler at 0x401a6120 code=c0000005 flags=10
trace:seh:EXC_CallHandler handler returned 2
trace:seh:EXC_CallHandler calling handler at 0x1019c7d code=c0000005 flags=10
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x5f492e0a code=c0000005 flags=10
trace:seh:EXC_CallHandler handler returned 1
trace:seh:EXC_CallHandler calling handler at 0x5f492d82 code=c0000005 flags=10
trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x40774fa4
...
same messages repeated again and again.

gdb backtrace:

#50 0x4005f518 in sigaction () from /lib/libc.so.6
#51 0x40775260 in __CxxFrameHandler (rec=0x4063ef04, frame=0x4074fc7c,
    exc_context=0x4063ef78, dispatch=0x4063ee94, context=0x4063eae0)
    at cppexcept.c:392
#52 0x401c4155 in __wine_call_from_32_regs ()
   from /usr/local/lib/wine/ntdll.dll.so
#53 0x40770d0d in __wine_regs_msvcrt_dll_77 ()
   from /usr/local/lib/wine/msvcrt.dll.so
#54 0x401a651f in EXC_RtlRaiseException (rec=0x4063ef04, context=0x4063ef78)
    at exception.c:216
#55 0x401bc646 in do_segv (context=0x4063ef78, trap_code=14, cr2=0x1c,
    err_code=4) at signal_i386.c:851
#56 0x401bca82 in segv_handler (__signal=11, __context=
      {sc_gs = 5335, __gsh = 0, sc_fs = 143, __fsh = 0, sc_es = 43, __esh = 
0, sc_ds = 43, __dsh = 0, sc_edi = 1080292788, sc_esi = 0, sc_ebp = 
1080292716, sc_esp = 1080292648, sc_ebx = 1081684044, sc_edx = 1075713776, 
sc_ecx = 0, sc_eax = 0, sc_trapno = 14, sc_err = 4, sc_eip = 1081560996, 
sc_cs = 35, __csh = 0, sc_eflags = 66050, esp_at_signal = 1080292648, sc_ss = 
43, __ssh = 0, i387 = 0, oldmask = 0, cr2 = 28}) at signal_i386.c:1057
#57 0x4005f518 in sigaction () from /lib/libc.so.6
#58 0x40775260 in __CxxFrameHandler (rec=0x4063f9dc, frame=0x4074fc7c,
    exc_context=0x4063fa50, dispatch=0x4063f96c, context=0x4063f5b8)
    at cppexcept.c:392
#59 0x401c4155 in __wine_call_from_32_regs ()
   from /usr/local/lib/wine/ntdll.dll.so
#60 0x40770d0d in __wine_regs_msvcrt_dll_77 ()
   from /usr/local/lib/wine/msvcrt.dll.so
#61 0x401a651f in EXC_RtlRaiseException (rec=0x4063f9dc, context=0x4063fa50)
    at exception.c:216
#62 0x401bc646 in do_segv (context=0x4063fa50, trap_code=14, cr2=0x0,
    err_code=4) at signal_i386.c:851
#63 0x401bca82 in segv_handler (__signal=11, __context=
      {sc_gs = 5335, __gsh = 0, sc_fs = 143, __fsh = 0, sc_es = 43, __esh = 
0, sc_ds = 43, __dsh = 49168, sc_edi = 1081408212, sc_esi = 1081408216, 
sc_ebp = 1081408220, sc_esp = 1081408180, sc_ebx = 1087173732, sc_edx = 
1077335880, sc_ecx = 1077404792, sc_eax = 0, sc_trapno = 14, sc_err = 4, 
sc_eip = 0, sc_cs = 35, __csh = 0, sc_eflags = 66118, esp_at_signal = 
1081408180, sc_ss = 43, __ssh = 0, i387 = 1080294784, oldmask = 0, cr2 = 0}) 
at signal_i386.c:1057
#64 0x4005f518 in sigaction () from /lib/libc.so.6

disassemble of section around second exception, sc_eip = 1081560996 
(0x40774fa4):

0x40774f78 <cxx_frame_handler+180>:     push   %esi
0x40774f79 <cxx_frame_handler+181>:     push   %edx
0x40774f7a <cxx_frame_handler+182>:     mov    0x18(%ebp),%edx
0x40774f7d <cxx_frame_handler+185>:     push   %edx
0x40774f7e <cxx_frame_handler+186>:     pushl  0x14(%ebp)
0x40774f81 <cxx_frame_handler+189>:     pushl  0x10(%ebp)
0x40774f84 <cxx_frame_handler+192>:     mov    0xc(%ebp),%ecx
0x40774f87 <cxx_frame_handler+195>:     push   %ecx
0x40774f88 <cxx_frame_handler+196>:     mov    0x8(%ebp),%edx
0x40774f8b <cxx_frame_handler+199>:     push   %edx
0x40774f8c <cxx_frame_handler+200>:     call   *%eax
0x40774f8e <cxx_frame_handler+202>:
    jmp    0x40775225 <cxx_frame_handler+865>
0x40774f93 <cxx_frame_handler+207>:     cmpl   $0x0,0xffffffe4(%ebp)
0x40774f97 <cxx_frame_handler+211>:
    jne    0x40774faa <cxx_frame_handler+230>
0x40774f99 <cxx_frame_handler+213>:
    call   0x40787070 <msvcrt_get_thread_data>
0x40774f9e <cxx_frame_handler+218>:     mov    0x1c(%eax),%eax
0x40774fa1 <cxx_frame_handler+221>:     mov    %eax,0x8(%ebp)
0x40774fa4 <cxx_frame_handler+224>:     mov    0x1c(%eax),%ecx
0x40774fa7 <cxx_frame_handler+227>:     mov    %ecx,0xffffffe4(%ebp)
0x40774faa <cxx_frame_handler+230>:     mov    0x1fc(%ebx),%edx



More information about the wine-devel mailing list