Bug 468889 - libldap-2.4.so.2: undefined symbol: ldap_int_tls_destroy
Summary: libldap-2.4.so.2: undefined symbol: ldap_int_tls_destroy
Alias: None
Product: Fedora
Classification: Fedora
Component: openldap
Version: 10
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Jan Safranek
QA Contact: Fedora Extras Quality Assurance
Depends On:
Blocks: 457638
TreeView+ depends on / blocked
Reported: 2008-10-28 17:03 UTC by Rex Dieter
Modified: 2009-03-17 20:05 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2009-03-17 20:05:06 UTC
Type: ---

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

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:

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

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:

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)

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