Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 06 Jun 2004 17:44:11 -0700
From:      Sean McNeil <sean@mcneil.com>
To:        Daniel Eischen <eischen@vigrid.com>
Cc:        freebsd-threads@freebsd.org
Subject:   Re: more symbol binding problems
Message-ID:  <1086569050.66929.2.camel@server.mcneil.com>
In-Reply-To: <Pine.GSO.4.10.10406062021010.20821-100000@pcnet5.pcnet.com>
References:  <Pine.GSO.4.10.10406062021010.20821-100000@pcnet5.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 2004-06-06 at 17:25, Daniel Eischen wrote:
> On Sun, 6 Jun 2004, Sean McNeil wrote:
> 
> > I have another one that I can't explain.  apache2 and libphp4.
> > 
> > The php4 shared library that is pulled into apache2 has the following
> > (with pthread mapped to libc_r):
> > 
> > /usr/local/libexec/apache2/libphp4.so:
>   [ ... ]
> >         libssl.so.3 => /usr/lib/libssl.so.3 (0x202538000)
> >         libcrypto.so.3 => /lib/libcrypto.so.3 (0x202672000)
> >         libpthread.so.1 => /usr/lib/libc_r.so.5 (0x2027c5000)
> >         libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x2028f0000)
> >         libc.so.5 => /lib/libc.so.5 (0x20062a000)
> > 
> > When I use the ldap account manager package (lam), it causes the httpd
> > process to get stuck in a busy-loop eating 1/2 the cpu as:
> > 
> > (gdb) bt
> > #0  0x00000002014fcd4e in select () from /lib/libc.so.5
> > #1  0x0000000200c4532e in ldap_int_select (ld=0x8c8c00, timeout=0x0)
> >     at os-ip.c:733
> > 
> > I do not understand why it is calling select in lib.so.5.  Shouldn't it
> > have called the one in libc_r?  With GLOBAL or LOCAL DAG this should
> > have been resolved via the weak symbol to __select, no?
> 
> Yes, it shouldn't be using select() from libc; select() should be
> resolved to _select() in libc_r (which calls __sys_poll() in libc).
> 
> > The interesting thing here is that if I use libpthread for apache then
> > there are no problems.  Maybe not all that suprising, though, as there
> > is no real difference in the select with libpthread whereas libc_r has a
> > much more complex implementation.
> 
> Sounds like the linker isn't doing the right thing.

Would you think it is the linker, or rtld?  Any ideas where I should
start?  I was going to look through rtld but I will focus on ld if you
think that is where the problem is.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1086569050.66929.2.camel>