Bug 110055

Summary: slapd fails after glibc update
Product: [Retired] Red Hat Linux Reporter: Xenofon Papadopoulos <adepali>
Component: glibcAssignee: Jakub Jelinek <jakub>
Status: CLOSED WORKSFORME QA Contact: Brian Brock <bbrock>
Severity: low Docs Contact:
Priority: medium    
Version: 9CC: drepper, fweimer
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2003-11-18 07:35:49 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Xenofon Papadopoulos 2003-11-14 15:40:43 UTC
Description of problem:
up2date installed the latest glibc (glibc-2.3.2-27.9.7) earlier today,
and since then i've been unable to run slapd. I have
openldap-2.0.27-8, and 'slapd init' exits with: 

/usr/sbin/slapd: relocation error: /usr/sbin/slapd: undefined symbol:
ldap_pvt_tls_init

Version-Release number of selected component (if applicable):
2.3.2-27.9.7

How reproducible:
always

Steps to Reproduce:
1. slapd init
2.
3.
  
Actual results:
/usr/sbin/slapd: relocation error: /usr/sbin/slapd: undefined symbol:
ldap_pvt_tls_init

Expected results:


Additional info:

Comment 1 Ulrich Drepper 2003-11-14 20:53:31 UTC
This symbol is defined in libldap.  Check that this is the case.  Look
at the output of

  ldd /usr/sbin/slapd

to see which DSOs are loaded, make sure no code which doesn't come
with the OS is used.  Then run

  LD_DEBUG=all LD_DEBUG_OUTPUT=/tmp/some-file /usr/sbin/slapd ARGS...

Determine the ARGS the script passes by observing what

  bash -x /etc/init.d/ldap start

prints (is it /etc/init.d/slapd in RHL9?  It's ldap in FC1 and I have
no more RHL9 machine to check).

Comment 2 Xenofon Papadopoulos 2003-11-17 09:07:24 UTC
I can't check it anymore, I moved back to glibc-2.3.2-11.9 on friday
and the problem was solved.

Comment 3 Ulrich Drepper 2003-11-18 07:35:49 UTC
Well, what do you expect me to do then?  There are many thousand
people who also have no problems.  It must be something with your
local configuration.  If you want to provide the info I asked for,
please reopen the bug and add the info here.

Comment 4 Xenofon Papadopoulos 2003-11-27 10:01:00 UTC
Sorry for coming back to this, but openldap keeps breaking whenever I
install glibc-2.3.2-27.9.7. I installed openldap-2.0.27-8 using the
rpm, so no custom stuff there. Here's the output of LD_DEBUG whenever
i do slapd init:

[...]
      1303:     symbol=ldap_pvt_tls_init;  lookup in file=/usr/sbin/slapd
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/local/lib/libldap_r.so.2
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/local/lib/liblber.so.2
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/lib/libsasl.so.7
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/lib/libgdbm.so.2
      1303:     symbol=ldap_pvt_tls_init;  lookup in file=/lib/libpam.so.0
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/kerberos/lib/libkrb5.so.3
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/kerberos/lib/libk5crypto.so.3
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/kerberos/lib/libcom_err.so.3
      1303:     symbol=ldap_pvt_tls_init;  lookup in file=/lib/libssl.so.4
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/lib/libcrypto.so.4
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/lib/libcrypt.so.1
      1303:     symbol=ldap_pvt_tls_init;  lookup in file=/lib/libnsl.so.1
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/lib/libresolv.so.2
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/lib/tls/libpthread.so.0
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/lib/libltdl.so.3
      1303:     symbol=ldap_pvt_tls_init;  lookup in file=/lib/libdl.so.2
     1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/lib/libwrap.so.0
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/lib/tls/libc.so.6
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/lib/libsasl2.so.2      1303:     symbol=ldap_pvt_tls_init; 
lookup in file=/usr/kerberos/lib/libgssapi_krb5.so.2
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/usr/lib/libz.so.1
      1303:     symbol=ldap_pvt_tls_init;  lookup in
file=/lib/ld-linux.so.2
      1303:     /usr/sbin/slapd: error: relocation error: undefined
symbol: ldap_pvt_tls_init (fatal)

I notice that ldd slapd displays libldap_r instead of libldap, might
that be a problem? Still, it's out of the box openldap installation.


Comment 5 Jakub Jelinek 2003-11-27 10:08:54 UTC
/usr/local/lib/libldap_r.so.2 certainly doesn't come from the distribution.
If you have incompatible shared libraries in your search path, then
you can be beaten by that.
What glibc-2.3.2-27.9.7 changed from older glibcs related to this is:
- search system library directories in ldconfig after ld.so.conf defined
  ones (#98966)
(to restore behaviour of ldconfig older than 1999).
If you really want to have incompatible shared libraries in /usr/local,
yet want to search /lib and/or /usr/lib before those libraries,
you now need to say that explicitely, ie. add /lib or /usr/lib
before /usr/local/lib in /etc/ld.so.conf.  If /lib or /usr/lib
aren't present in ld.so.conf, they are implicitely added to the end
of the list.