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