This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/39832] [4.4/4.5 Regression] program built by x86_64-pc-mingw32-g++ run crash, maybe for _Unwind_SjLj_Unregister or __dyn_tls_dtor



------- Comment #6 from drangon dot mail at gmail dot com  2009-07-25 07:45 -------
I try the newest gcc svn trunk code, the problem still exist.
program built by x86_64-w64-mingw32-gcc runs ok, but program built by
x86_64-w64-mingw32-g++ runs failed, change libgcc_s_sjlj-1.dll to version
2009-06-20, the same program runs ok ( need not recompile ).

I use gdb or windbg to run the program, it show the following result:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000408059 in __dyn_tls_dtor (hDllHandle=0x400000, dwReason=0,
    lpreserved=0x0)
    at
/compile/mingw-w64-dgn/source/mingw-w64/trunk/mingw-w64-crt/crt/tlssup.c:
120
120    
/compile/mingw-w64-dgn/source/mingw-w64/trunk/mingw-w64-crt/crt/tlssup.c
: No such file or directory.
        in
/compile/mingw-w64-dgn/source/mingw-w64/trunk/mingw-w64-crt/crt/tlssu
p.c
(gdb) bt
#0  0x0000000000408059 in __dyn_tls_dtor (hDllHandle=0x400000, dwReason=0,
    lpreserved=0x0)
    at
/compile/mingw-w64-dgn/source/mingw-w64/trunk/mingw-w64-crt/crt/tlssup.c:
120
#1  0x0000000077f1cc41 in ?? ()
warning: (Internal error: pc 0x3fffff in read in psymtab, but not in symtab.)

#2  0x0000000000400000 in ?? (warning: (Internal error: pc 0x3fffff in read in
p
symtab, but not in symtab.)

)
warning: (Internal error: pc 0x3fffff in read in psymtab, but not in symtab.)

#3  0x0000000000000000 in ?? ()
(gdb) info register
rax            0xfeeefeeefeeefeee       -76843841185972498
rbx            0x49e050 4841552
rcx            0x0      0
rdx            0x0      0
rsi            0x400000 4194304
rdi            0x408024 4227108
rbp            0x22fb10 0x22fb10
rsp            0x22fad0 0x22fad0
r8             0x0      0
r9             0x9f000  651264
r10            0x400080 4194432
r11            0x22fb50 2292560
r12            0x0      0
r13            0x7fffffd8000    8796092858368
r14            0x77fa8f50       2012909392
r15            0x0      0
rip            0x408059 0x408059 <__dyn_tls_dtor+53>
eflags         0x10202  [ IF RF ]
cs             0x33     51
ss             0x202002b        33685547
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x2b0000 2818048
(gdb)


0000000000408024 <___dyn_tls_dtor>:

static BOOL WINAPI
__dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{
  408024:   55                      push   %rbp
  408025:   48 89 e5                mov    %rsp,%rbp
  408028:   48 83 ec 40             sub    $0x40,%rsp
  40802c:   48 89 4d 10             mov    %rcx,0x10(%rbp)
  408030:   89 55 18                mov    %edx,0x18(%rbp)
  408033:   4c 89 45 20             mov    %r8,0x20(%rbp)
  TlsDtorNode *pnode, *pnext;
  int i;

  if (dwReason != DLL_THREAD_DETACH && dwReason != DLL_PROCESS_DETACH)
  408037:   83 7d 18 03             cmpl   $0x3,0x18(%rbp)
  40803b:   74 10                   je     40804d <___dyn_tls_dtor+0x29>
  40803d:   83 7d 18 00             cmpl   $0x0,0x18(%rbp)
  408041:   74 0a                   je     40804d <___dyn_tls_dtor+0x29>
    return TRUE;
  408043:   b8 01 00 00 00          mov    $0x1,%eax
  408048:   e9 ab 00 00 00          jmpq   4080f8 <___dyn_tls_dtor+0xd4>

  for (pnode = dtor_list; pnode != NULL; pnode = pnext)
  40804d:   48 8d 0d 6c 3a 08 00    lea    0x83a6c(%rip),%rcx        # 48bac0
<___emutls_v.dtor_list>
  408054:   e8 ef 0c 00 00          callq  408d48 <___emutls_get_address>
  408059:   48 8b 00                mov    (%rax),%rax
  40805c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  408060:   eb 6a                   jmp    4080cc <___dyn_tls_dtor+0xa8>
    {
      for (i = pnode->count - 1; i >= 0; --i)
  408062:   48 8b 45 f0             mov    -0x10(%rbp),%rax
  408066:   8b 00                   mov    (%rax),%eax
  408068:   83 e8 01                sub    $0x1,%eax
  40806b:   89 45 fc                mov    %eax,-0x4(%rbp)
  40806e:   eb 2f                   jmp    40809f <___dyn_tls_dtor+0x7b>


-- 

drangon dot mail at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.5 Regression] program    |[4.4/4.5 Regression] program
                   |built by x86_64-pc-mingw32- |built by x86_64-pc-mingw32-
                   |gcc run crash, maybe for    |g++ run crash, maybe for
                   |_Unwind_SjLj_Unregister,    |_Unwind_SjLj_Unregister or
                   |                            |__dyn_tls_dtor


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39832


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]