Bug 468889

Summary: libldap-2.4.so.2: undefined symbol: ldap_int_tls_destroy
Product: [Fedora] Fedora Reporter: Rex Dieter <rdieter>
Component: openldapAssignee: Jan Safranek <jsafrane>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: 10CC: jreznik, jsafrane, kevin, than
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-03-17 20:05:06 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:
Bug Depends On:    
Bug Blocks: 457638    
Attachments:
Description Flags
strace log
none
stderr with LD_DEBUG=all none

Description Rex Dieter 2008-10-28 17:03:35 UTC
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 18:06:09 UTC
oops, make that: ldap_int_tls_destroy

Comment 2 Jan Safranek 2008-10-31 13:08:23 UTC
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:
kdebase-runtime-4.0.3-10.fc9.x86_64
kdebase-workspace-4.0.3-20.fc9.x86_64
openldap-2.4.8-3.fc9.x86_64

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 13:16:24 UTC
> 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 13:20:33 UTC
$ 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
openldap-devel-2.4.12-1.fc10.x86_64
openldap-2.4.12-1.fc10.x86_64
nss_ldap-261-4.fc10.x86_64
openldap-2.4.12-1.fc10.i386
python-ldap-2.3.5-1.fc10.x86_64
wine-ldap-1.1.7-1.fc10.i386

Comment 5 Jan Safranek 2008-11-04 13:47:02 UTC
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 16:33:34 UTC
Looks like libldap isn't finding its own symbols for some reason I don't understand.

Comment 7 Than Ngo 2008-11-04 16:34:54 UTC
Jan, ldap_int_tls_destroy is not used in KDE. It seems a issue in linker

Comment 8 Jaroslav Reznik 2008-11-05 08:50:53 UTC
Created attachment 322544 [details]
stderr with LD_DEBUG=all

LD_DEBUG=all stderr output of 'kcmshell4 kdm'

Comment 9 Jan Safranek 2008-11-05 11:54:44 UTC
This is fixed in kdebase-workspace-4.1.2-11.fc10, together with bug #457638.

Comment 10 Rex Dieter 2008-11-05 13:57:38 UTC
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 15:19:14 UTC
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-26 04:22:38 UTC
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:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping

Comment 13 Rex Dieter 2009-03-17 20:05:06 UTC
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)