[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: NPTL issues w/ stable



Sorry for the reply to a 6-month-old message, but I didn't see any other
replies to it, and I ran into this same problem today.

Original message follows unsnipped, as the context is probably not
as readily available as you might wish.

On Mon, Jan 02, 2006 at 10:30:35PM -0500, David Coulson wrote:
> I've got a few boxes running Debian stable here, all updated. One box behaves
> oddly, in that I get this:
> 
> # getconf GNU_LIBPTHREAD_VERSION
> linuxthreads-0.10
> 
> 
> When on everything else I get
> 
> getconf GNU_LIBPTHREAD_VERSION
> NPTL 0.60
> 
> 
> One the boxes which use NPTL, I can do this:
> 
> # ldd /lib/libm.so.6
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
>         libc.so.6 => /lib/tls/libc.so.6 (0xb7e4a000)
> 
> 
> On the broken box, I get the following.
> 
> # ldd /lib/libm.so.6
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
>         libc.so.6 => /lib/libc.so.6 (0x40029000)
> 
> 
> What exactly tells the linker to use /lib/tls first rather than /lib?
> I've used strace, but still can't come up with anything useful. I
> rsynced /lib from a working box onto the broken one and it still does
> the same thing.
> 
> One is running 2.6.14.2 (good), the other 2.6.14.5 (broken). I don't
> think a minor revision change should make a difference. I threw 2.6.11
> onto the broken box also, and it does the same thing.
> 
> Any suggestions? I feel like I'm going in circles to track this
> problem.

Several factors are at work, of course. Since your 'broken' machine has
a 2.6 kernel, the kernel isn't the problem, and it seems safe to assume
you're not using some wonderfully out-of-date libc6 package on there
either, so we can be reasonably sure some ld-linux.so configuration item
somewhere is causing the difficulty.

Using LD_ASSUME_KERNEL in particular is a good way to force the dynamic
linker not to use the lib/tls directories, and other LD_* options could
have similar effects, and the /etc/ld.so.conf could affect ldconfig's
idea of what should be used, so you should check those.

But the one that got me is /etc/ld.so.nohwcap. If that file exists, the
dynamic linker will not try to load libraries from the lib/tls dirs. In
my case, that file was created when I downgraded libc6 from an
etch (or maybe backports.org) version to the current sarge version. I
believe it was created erroneously, since that libc6 version should be
able to handle hwcap foo fine and certainly does NPTL fine with that
file gone, but I haven't the time to track down where it came from and
file a proper bug report.

So, short answer, David, I bet you need to rm /etc/ld.so.nohwcap.

> 
> David

-- 
paul



Reply to: