nss_ldap broken

Oliver Eikemeier eikemeier at fillmore-labs.com
Thu Apr 1 01:49:35 PST 2004

Sean McNeil wrote:
> On Wed, 2004-03-31 at 13:48, Daniel Eischen wrote:
>>On Mon, 29 Mar 2004, Daniel Eischen wrote:
>>>On Mon, 29 Mar 2004, Jacques A. Vidrine wrote:
>>>>Sean, could you report how this patch works for you?  Hmm, actually, it
>>>>looks almost identical to what you posted :-)  Is there a reason that
>>>>you stored the value of `__isthreaded' in a local variable?  Did that
>>>>make a difference for your case?
>>>I'm unsure how nss_ldap was built to depend on libpthread (or
>>>any threads library).  I built it from ports and 'ldd' didn't
>>>report any dependency on a threads library.
>>I rebuilt it and now it does depend on libpthread.  I
>>think it is because I had openldap-client-2.1.26 which
>>didn't have a dependency on libpthread, but upgrading
>>to openldap-client-2.1.28 brought in the dependency.
>>Too bad these shared libraries can't be made to use
>>the libgcc trick, so they can still be thread-safe
>>but not depend on a threads library.  That would
>>also make it easier to use different thread libraries
>>for different applications relying on common shared
> I'm unclear as to why any library that is thread-safe would need to be
> linked with libpthread.so. Since libc already has the hooks in there, I
> don't see why you need to link with it unless you are actually
> using/relying on threads.  IMHO, we should just not link libpthread.so
> into these shared libraries.

I do understand some of the technical diffuculties here, but:

- it should be documented somewhere (bsd.port.mk gives you only PTHREAD_LIBS)

- it requires some major surgery to ports makefiles to make sure that
  libraries and application in a port are linked differently

- there should be some easy tests, i.e. is it always an error if ldd *.so
  contains libpthread?

I committed a workaround for the OpenLDAP client port, but it seems that we
have may this problem in other parts of the system too, so a general
guideline (perhaps with a note in /usr/ports/CHANGES) would be appreciated.
Or do I overestimate the extend of this issue here?


More information about the freebsd-current mailing list