Bug#591544: libc6: dlopen() does not return when static compilation is used
On Tue, Aug 03, 2010 at 09:59:50PM +0200, Ludovic Rousseau wrote:
> Package: libc6
> Version: 2.11.2-2
> Severity: important
>
> The jpilot package ./configure script generate a test program that does
> not finish.
>
> A short version of the problematic source code is:
>
> #include <dlfcn.h>
>
> int main ()
> {
> void *self = dlopen (0, RTLD_GLOBAL | RTLD_LAZY);
>
> return 0;
> }
>
> And is compiled using:
>
> $ gcc -o conftest -g -Wall -DHAVE_DLFCN_H -Wl,--export-dynamic -static conftest.c -ldl
> conftest.c: In function ‘main’:
> conftest.c:5: warning: unused variable ‘self’
> /usr/bin/ld: /tmp/ccToBZZa.o: in function main:conftest.c:5: warning: Using `dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
>
> The warning may be an indication that something strange is happening.
>
> Then the execution:
>
> $ ./conftest
> But never returns and the ./configure never finishes.
>
Are you using binutils-gold? If yes you are probably hitting bug#584607.
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
Reply to: