Arla 0.42-RC2

Jeffrey Hutzelman jhutz at cmu.edu
Wed Apr 5 17:19:49 CEST 2006



On Wednesday, April 05, 2006 05:06:58 PM +0200 Niels Möller 
<nisse at lysator.liu.se> wrote:

> nisse at lysator.liu.se (Niels Möller) writes:
>
>> It's puzzling. I also tried strace -f arlad -n, which says:
>>
>>   5357  open("/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file
>>   or directory) 5357  open("/usr/lib/i686/cmov/libgcc_s.so.1", O_RDONLY)
>>   = -1 ENOENT (No such file or directory) 5357
>>   open("/usr/lib/i686/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such
>>   file or directory) 5357  open("/usr/lib/libgcc_s.so.1", O_RDONLY) = -1
>>   ENOENT (No such file or directory) 5357  write(2, "libgcc_s.so.1 must
>>   be installed "..., 59) = 59 5357  exit_group(127)                   = ?
>>
>> The file /lib/libgcc_s.so.1 exists and is readable, so I really don't
>> understand why open returns ENOENT.
>
> ceder helped me spot the "obvious" problem. Earlier in the strace
> output:
>
>   5332  chroot("/usr/arla/cache")         = 0
>
> So here we have the problem: pthread_cancel wants to use dlopen to
> load libgcc_s.so.1. But by the time it calls dlopen, this file is
> hidden by chroot.
>
> I'm tempted to say it's a bug in glibc to depend on dlopen like this,
> and I wouldn't be surprised if this behaviour is not POSIX-compliant.
>
> Is there any way to force the loading of libgcc earlier? Or how to
> work around this?

You could try linking arlad against libgcc explicitly.
You could also use LD_PRELOAD to get it loaded early.

-- Jeff


More information about the Arla-drinkers mailing list