This is the mail archive of the cygwin mailing list for the Cygwin 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]

abort during exit() with a dynamically loaded C++ library

I think I have found a problem when building programs using the latest mesa library, where abort is being called during exit()

This seems to be x86 specific, and looks like it is somehow related to having a C++ library dynamically loaded by a C program.

I think I have reduced it to the following test case:


#include <assert.h>
#include <dlfcn.h>

int main()
   void *h = dlopen("dllib.dll", 0);


#include <fstream>

std::fstream instance;


        g++ -g -O0 -c
        g++ -g -O0 -shared -o dllib.dll dllib.o
        gcc -g -O0 -o test.exe test.c

Running under gdb shows gcc_abort() in __deregister_frame_info_bases() is being hit

$ gdb test
Program received signal SIGABRT, Aborted.
0x0028da18 in ?? ()
(gdb) bt
#0  0x0028da18 in ?? ()
#1 0x74f912cc in WriteFile () from /cygdrive/c/Windows/syswow64/kernel32.dll #2 0x610da70c in sig_send(_pinfo*, siginfo_t&, _cygtls*)@12 (p=p@entry=0x60fd0000, si=..., tls=tls@entry=0x0)
    at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/
#3  0x610d7dbc in _pinfo::kill(siginfo_t&)@8 (this=0x60fd0000, si=...)
    at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/
#4 0x610d8286 in kill0 (pid=pid@entry=5044, si=...) at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/ #5 0x610d8452 in kill (sig=sig@entry=6, pid=5044) at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/ #6 raise (sig=sig@entry=6) at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/ #7 0x610d86f3 in abort () at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/ #8 0x699134d1 in __deregister_frame_info_bases (begin=0x404038 <__EH_FRAME_BEGIN__>)
    at /usr/src/debug/gcc-4.8.3-1/libgcc/unwind-dw2-fde.c:216
#9  0x00401182 in __gcc_deregister_frame ()
#10 0x61006466 in do_global_dtors () at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/
#11 0x61159aba in __call_exitprocs (code=code@entry=0, d=d@entry=0x0)
at /usr/src/debug/cygwin-1.7.30-1/newlib/libc/stdlib/__call_atexit.c:118 #12 0x611305d8 in exit (code=0) at /usr/src/debug/cygwin-1.7.30-1/newlib/libc/stdlib/exit.c:66 #13 0x61006b39 in cygwin_exit (n=0) at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/ #14 0x61008041 in cygwin_exit_return () at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/ #15 0x61005e84 in _cygtls::call2(unsigned long (*)(void*, void*), void*, void*)@16 (this=<optimized out>, func=func@entry=0x610071d0 <dll_crt0_1(void*)>, arg=arg@entry=0x0, buf=buf@entry=0x28cd84)
    at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/
#16 0x61005ff6 in _cygtls::call (func=func@entry=0x610071d0 <dll_crt0_1(void*)>, arg=arg@entry=0x0)
    at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/
#17 0x61006f54 in _dll_crt0@0 () at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/ #18 0x00401222 in cygwin_crt0 (f=0x4011a0 <main>) at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/lib/cygwin_crt0.c:22 #19 0x00401015 in mainCRTStartup () at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/crt0.c:29

Problem reports:
Unsubscribe info:

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