Core dump on 32-bit Cygwin if program calls dlopen

Ken Brown kbrown@cornell.edu
Tue Jul 15 11:45:00 GMT 2014


On 7/15/2014 5:02 AM, Corinna Vinschen wrote:
> On Jul 14 19:42, Ken Brown wrote:
>> I'm getting a core dump on exit from a program that does nothing but call
>> dlopen.  (But the call to dlopen succeeds.)  This happens only in the 32-bit
>> case.  Here's a simple test case.
>>
>> $ cat test_dlopen.c
>> #include <stdio.h>
>> #include <dlfcn.h>
>> int
>> main()
>> {
>>    const char *dllname = "cyggs-9.dll";
>>    void *handle;
>>    printf ("Trying to dlopen %s...", dllname);
>>    handle = dlopen (dllname, RTLD_LAZY);
>>    if (handle)
>>      {
>>        printf ("succeeded.\n");
>>        return 0;
>>      }
>>    else
>>      {
>>        printf ("failed.\n");
>>        return 1;
>>      }
>> }
>>
>> $ gcc test_dlopen.c
>>
>> $ ./a
>> Trying to dlopen cyggs-9.dll...succeeded.
>> Aborted (core dumped)
>
> The crash occurs when calling the destructors from do_global_dtors.
> The crash address points to a crash inside a destructor of libgcc
> (actually cyggcc_1-1.dll) which has been pulled in by cyggs-9.dll.
>
> What destructor in libgcc would that be?  And what is it expecting
> which is apparently missing?

FWIW, the problem disappears if I revert gcc-core and libgcc1 to 4.8.2-2.

Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list