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?