Bug 468889 - libldap-2.4.so.2: undefined symbol: ldap_int_tls_destroy
libldap-2.4.so.2: undefined symbol: ldap_int_tls_destroy
Product: Fedora
Classification: Fedora
Component: openldap (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jan Safranek
Fedora Extras Quality Assurance
: Reopened
Depends On:
Blocks: 457638
  Show dependency treegraph
Reported: 2008-10-28 13:03 EDT by Rex Dieter
Modified: 2009-03-17 16:05 EDT (History)
4 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2009-03-17 16:05:06 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:

Attachments (Terms of Use)
strace log (973.33 KB, text/plain)
2008-11-04 08:47 EST, Jan Safranek
no flags Details
stderr with LD_DEBUG=all (57 bytes, text/plain)
2008-11-05 03:50 EST, Jaroslav Reznik
no flags Details

  None (edit)
Description Rex Dieter 2008-10-28 13:03:35 EDT
We can reproduce this on F-9 too:
$ yum install kdebase-workspace
$ kcmshell4 kdm
(click Cancel)
kcmshell4: symbol lookup error: /usr/lib64/libldap-2.4.so.2: undefined symbol: ldap_int_tls-destroy

Wierd, any ideas what's going wrong here?
Comment 1 Rex Dieter 2008-10-28 14:06:09 EDT
oops, make that: ldap_int_tls_destroy
Comment 2 Jan Safranek 2008-10-31 09:08:23 EDT
I installed fresh yesterday's rawhide and I can't reporoduce the bug. kcmshell4 kdm shows lot of output, but in the end I can't see any symbol lookup error. I even tried to set up the authentication to take users and credentials from ldap, still without aforementioned error.

I have:

Do you have anything done with LDAP, e.g. user authentication?

If I understand it correctly, kcmshell4 just loads the configuration tool from /usr/lib64/kde4/kcm_kdm.so, right? Could you please post result of:
ldd -r /usr/lib*/kde4/kcm_kdm.so
ldd -r /usr/bin/kcmshell4
cat /etc/nsswitch.conf
rpm -qa | grep ldap
Comment 3 Rex Dieter 2008-10-31 09:16:24 EDT
> I installed fresh yesterday's rawhide and I can't reproduce the bug.

Really?  hitting the "Cancel" button doesn't produce the error?
We have 2 devs that *can*, interesting...

(requested info forthcoming)
Comment 4 Rex Dieter 2008-10-31 09:20:33 EDT
$ ldd -r /usr/lib64/kde4/kcm_kdm.so                                
        linux-vdso.so.1 =>  (0x00007fff445fd000)                                           
        libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x000000000037d000)                   
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000000007a5000)                     
        libkdecore.so.5 => /usr/lib64/libkdecore.so.5 (0x00000000009c1000)                 
        libkdeui.so.5 => /usr/lib64/libkdeui.so.5 (0x0000000000df2000)                     
        libkio.so.5 => /usr/lib64/libkio.so.5 (0x000000007288b000)                         
        libkparts.so.4 => /usr/lib64/libkparts.so.4 (0x00000000013b0000)                   
        libkpty.so.4 => /usr/lib64/libkpty.so.4 (0x0000000021876000)                       
        libQtXml.so.4 => /usr/lib64/libQtXml.so.4 (0x00000000015f2000)                     
        libQt3Support.so.4 => /usr/lib64/libQt3Support.so.4 (0x0000000001837000)           
        libkfile.so.4 => /usr/lib64/libkfile.so.4 (0x0000000001d40000)                     
        libSM.so.6 => /usr/lib64/libSM.so.6 (0x0000000001fc4000)                           
        libICE.so.6 => /usr/lib64/libICE.so.6 (0x00000000021cc000)                         
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00000000023e7000)                         
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00000000026f2000)                       
        libXft.so.2 => /usr/lib64/libXft.so.2 (0x0000000002903000)                         
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x0000000002b17000)                         
        libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x0000000002d19000)                     
        libXpm.so.4 => /usr/lib64/libXpm.so.4 (0x0000000002f1e000)                         
        libkde3support.so.4 => /usr/lib64/libkde3support.so.4 (0x000000000312f000)         
        libqimageblitz.so.4 => /usr/lib64/libqimageblitz.so.4 (0x000000000342c000)         
        libQtNetwork.so.4 => /usr/lib64/libQtNetwork.so.4 (0x0000000003644000)             
        libknewstuff2.so.4 => /usr/lib64/libknewstuff2.so.4 (0x000000000393e000)           
        libutil.so.1 => /lib64/libutil.so.1 (0x0000000003ba2000)                           
        libutempter.so.0 => /usr/lib64/libutempter.so.0 (0x0000000003da5000)               
        libQtSvg.so.4 => /usr/lib64/libQtSvg.so.4 (0x0000000059561000)                     
        libXtst.so.6 => /usr/lib64/libXtst.so.6 (0x0000000003fa7000)                       
        libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00000000041ad000)                 
        libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00000000043b7000)                   
        libstreamanalyzer.so.0 => /usr/lib64/libstreamanalyzer.so.0 (0x00000000045bc000)   
        libstreams.so.0 => /usr/lib64/libstreams.so.0 (0x000000000482c000)                 
        libz.so.1 => /lib64/libz.so.1 (0x0000000004a5e000)                                 
        libbz2.so.1 => /lib64/libbz2.so.1 (0x0000000004c73000)                             
        libresolv.so.2 => /lib64/libresolv.so.2 (0x0000000004e83000)                       
        libsolid.so.4 => /usr/lib64/libsolid.so.4 (0x000000000509b000)                     
        libQtDBus.so.4 => /usr/lib64/libQtDBus.so.4 (0x0000000005323000)                   
        libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x000000000558a000)                     
        libfam.so.0 => /usr/lib64/libfam.so.0 (0x0000000006089000)                         
        libacl.so.1 => /lib64/libacl.so.1 (0x0000000006291000)                             
        libattr.so.1 => /lib64/libattr.so.1 (0x0000000006498000)                           
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x000000000669c000)                 
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000000664f3000)                   
        libm.so.6 => /lib64/libm.so.6 (0x00000000d597e000)                                 
        libc.so.6 => /lib64/libc.so.6 (0x00000000068a5000)                                 
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000000006c17000)                         
        libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x0000000006e2e000)             
        librt.so.1 => /lib64/librt.so.1 (0x0000000007032000)                               
        libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x000000000723b000)                   
        libdl.so.2 => /lib64/libdl.so.2 (0x000000000751c000)                               
        /lib64/ld-linux-x86-64.so.2 (0x000000390e000000)                                   
        libQtSql.so.4 => /usr/lib64/libQtSql.so.4 (0x0000000007720000)
        libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x000000002fd0c000)
        libXi.so.6 => /usr/lib64/libXi.so.6 (0x000000000795b000)
        libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x0000000007b64000)
        libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x0000000007d6b000)
        libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x0000000007f6d000)
        libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x0000000008205000)
        libssl.so.7 => /lib64/libssl.so.7 (0x0000000008436000)
        libcrypto.so.7 => /lib64/libcrypto.so.7 (0x0000000008685000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00000000089e8000)
        libxcb-xlib.so.0 => /usr/lib64/libxcb-xlib.so.0 (0x0000000008bec000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x0000000008ded000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x000000009a0ea000)
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x0000000009008000)
        libexpat.so.1 => /lib64/libexpat.so.1 (0x000000007c000000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000000009246000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000000009475000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000000009717000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x000000000991a000)
        libcap.so.2 => /lib64/libcap.so.2 (0x0000000009b3f000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x0000000009d43000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000000009f4d000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x000000000a14f000)

$ ldd -r /usr/bin/kcmshell4
        linux-vdso.so.1 =>  (0x00007fff12dfd000)   
        libkdeinit4_kcmshell4.so => /usr/lib64/libkdeinit4_kcmshell4.so (0x0000003a5ae00000)
        libkparts.so.4 => /usr/lib64/libkparts.so.4 (0x0000003a5ee00000)                    
        libkio.so.5 => /usr/lib64/libkio.so.5 (0x0000003a5e800000)                          
        libkdeui.so.5 => /usr/lib64/libkdeui.so.5 (0x0000003a5de00000)                      
        libstreamanalyzer.so.0 => /usr/lib64/libstreamanalyzer.so.0 (0x0000003920800000)    
        libstreams.so.0 => /usr/lib64/libstreams.so.0 (0x0000003920000000)                  
        libsolid.so.4 => /usr/lib64/libsolid.so.4 (0x0000003a5e400000)                      
        libfam.so.0 => /usr/lib64/libfam.so.0 (0x0000003920400000)                          
        libacl.so.1 => /lib64/libacl.so.1 (0x000000391e000000)                              
        libattr.so.1 => /lib64/libattr.so.1 (0x000000391dc00000)                            
        libkutils.so.4 => /usr/lib64/libkutils.so.4 (0x0000003a60c00000)                    
        libQtSvg.so.4 => /usr/lib64/libQtSvg.so.4 (0x0000003a5da00000)                      
        libkdecore.so.5 => /usr/lib64/libkdecore.so.5 (0x0000003a5d400000)                  
        libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x0000003a5b200000)                    
        libpthread.so.0 => /lib64/libpthread.so.0 (0x000000390f000000)                      
        libQtNetwork.so.4 => /usr/lib64/libQtNetwork.so.4 (0x0000003a5cc00000)              
        libQtDBus.so.4 => /usr/lib64/libQtDBus.so.4 (0x0000003a5d000000)                    
        libz.so.1 => /lib64/libz.so.1 (0x000000390f400000)                                  
        libbz2.so.1 => /lib64/libbz2.so.1 (0x000000391aa00000)                              
        libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003915c00000)                        
        libSM.so.6 => /usr/lib64/libSM.so.6 (0x0000003912800000)                            
        libICE.so.6 => /usr/lib64/libICE.so.6 (0x0000003912400000)                          
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00000035eea00000)                          
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00000035eee00000)                        
        libXft.so.2 => /usr/lib64/libXft.so.2 (0x00000035f2200000)                          
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x0000003910000000)                          
        libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x0000003910400000)                      
        libXpm.so.4 => /usr/lib64/libXpm.so.4 (0x00000035f2e00000)                          
        libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x0000003a5bc00000)                      
        libQtXml.so.4 => /usr/lib64/libQtXml.so.4 (0x0000003a5c800000)                      
        libXtst.so.6 => /usr/lib64/libXtst.so.6 (0x00000035f3600000)                        
        libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00000035efe00000)                  
        libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00000035ef200000)                    
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00000035ef600000)                  
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003913c00000)                    
        libm.so.6 => /lib64/libm.so.6 (0x000000390e800000)                                  
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003912c00000)                          
        libc.so.6 => /lib64/libc.so.6 (0x000000390e400000)                                  
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x0000003919a00000)                        
        libdl.so.2 => /lib64/libdl.so.2 (0x000000390ec00000)                                
        libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x0000003913000000)                      
        libXi.so.6 => /usr/lib64/libXi.so.6 (0x00000035efa00000)                            
        libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00000035f0200000)
        libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00000035f0600000)
        libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x0000003913800000)
        libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x0000003914400000)
        libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x0000003a5aa00000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003911400000)
        libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x0000003a5a600000)
        /lib64/ld-linux-x86-64.so.2 (0x000000390e000000)
        libssl.so.7 => /lib64/libssl.so.7 (0x0000003918800000)
        libcrypto.so.7 => /lib64/libcrypto.so.7 (0x0000003917000000)
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x0000003916400000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003911c00000)
        libxcb-xlib.so.0 => /usr/lib64/libxcb-xlib.so.0 (0x000000390fc00000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x000000390f800000)
        libexpat.so.1 => /lib64/libexpat.so.1 (0x0000003913400000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000003917800000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000003917400000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003916800000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000003917c00000)
        libcap.so.2 => /lib64/libcap.so.2 (0x0000003916000000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x0000003918000000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003918400000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003911800000)

$ cat /etc/nsswitch.conf 
# /etc/nsswitch.conf                             
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.           
# The entry '[NOTFOUND=return]' means that the search for an     
# entry should stop if the search in the previous entry turned   
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the 
# next entry.                                                        
# Legal entries are:                                                 
#       nisplus or nis+         Use NIS+ (NIS version 3)             
#       nis or yp               Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)          
#       files                   Use the local files                    
#       db                      Use the local database (.db) files     
#       compat                  Use NIS on compat mode                 
#       hesiod                  Use Hesiod for user lookups            
#       [NOTFOUND=return]       Stop searching if not found so far     

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases                                      
# Example:                                                              
#passwd:    db files nisplus nis                                        
#shadow:    db files nisplus nis                                        
#group:     db files nisplus nis                                        

passwd:     files
shadow:     files
group:      files

#hosts:     db files nisplus nis dns
hosts:      files dns               

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus

$ rpm -qa | grep ldap
Comment 5 Jan Safranek 2008-11-04 08:47:02 EST
Created attachment 322424 [details]
strace log

I finally reproduced the bug, but I still do not have any idea why someone wants ldap_int_tls_destroy and why the linker does not resolve it...

ldap_int_tls_destroy is internal ldap function, it's not in public include files in openldap-devel package and nobody outside openldap should ever use it.
Comment 6 Kevin Kofler 2008-11-04 11:33:34 EST
Looks like libldap isn't finding its own symbols for some reason I don't understand.
Comment 7 Ngo Than 2008-11-04 11:34:54 EST
Jan, ldap_int_tls_destroy is not used in KDE. It seems a issue in linker
Comment 8 Jaroslav Reznik 2008-11-05 03:50:53 EST
Created attachment 322544 [details]
stderr with LD_DEBUG=all

LD_DEBUG=all stderr output of 'kcmshell4 kdm'
Comment 9 Jan Safranek 2008-11-05 06:54:44 EST
This is fixed in kdebase-workspace-4.1.2-11.fc10, together with bug #457638.
Comment 10 Rex Dieter 2008-11-05 08:57:38 EST
Not exactly fixed, we only put in a crude workaround (by manually linking kcm_kdm against openldap), I'd prefer a proper fix... reopening for posterity.

(I'm ok with leaving this closed too, if that's what others would prefer)
Comment 11 Jan Safranek 2008-11-06 10:19:14 EST
Can't say what is wong. If I set LD_DEBUG=all, I can see that e.g. symbol ldap_int_inet4or6, required by libldap-2.4.so.2, is found in the same library:

symbol=ldap_int_inet4or6;  lookup in file=/usr/lib64/libldap-2.4.so.2 [0]
binding file /usr/lib64/libldap-2.4.so.2 [0] to /usr/lib64/libldap-2.4.so.2 [0]: normal symbol `ldap_int_inet4or6'

But with ldap_int_tls_destroy the linker does not even try to look into libldap-2.4.so:

symbol=ldap_int_tls_destroy;  lookup in file=/usr/lib64/libkdeinit4_kcmshell4.so
symbol=ldap_int_tls_destroy;  lookup in file=/usr/lib64/libkparts.so.4
(lot of libraries, libldap-2.4.so is not there)

If I try another binary, which links to that symbol (e.g. ldapsearch from openldap-clients.rpm), I can see no problem when resolving ldap_int_tls_destroy:

symbol=ldap_int_tls_destroy;  lookup in file=/usr/lib64/libldap-2.4.so.2 [0]
binding file /usr/lib64/libldap-2.4.so.2 [0] to /usr/lib64/libldap-2.4.so.2 [0]: normal symbol `ldap_int_tls_destroy'
Comment 12 Bug Zapper 2008-11-25 23:22:38 EST
This bug appears to have been reported against 'rawhide' during the Fedora 10 development cycle.
Changing version to '10'.

More information and reason for this action is here:
Comment 13 Rex Dieter 2009-03-17 16:05:06 EDT
Looks like kde-4.2's reduced linkage made this go away.  I'll take the liberty of closing this.  (Feel free to reopen if anyone disagrees)

Note You need to log in before you can comment on or make changes to this bug.