Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Feb 2010 01:48:25 -0500
From:      jhell <jhell@DataIX.net>
To:        George Mamalakis <mamalos@eng.auth.gr>
Cc:        freebsd-stable <freebsd-stable@freebsd.org>
Subject:   Re: openldap client GSSAPI authentication segfaults in fbsd8stable i386
Message-ID:  <alpine.BSF.2.00.1002120141001.9069@pragry.qngnvk.ybpny>
In-Reply-To: <4B74502C.3080906@eng.auth.gr>
References:  <4B74502C.3080906@eng.auth.gr>

next in thread | previous in thread | raw e-mail | index | archive | help

On Thu, 11 Feb 2010 13:45, mamalos@ wrote:
> Dear all,
>
> I am facing many instabilities in FBSD8 with openldap-client and sasl 
> authentication (GSSAPI in particular). I have setup an openldap 2.4.1 server 
> with gssapi support (through cyrus-sasl-2.1.23) on a fbsd8-stable amd64 
> latest sources, in a esxi host. In the same host I have setup two 
> fbsd8-stable i386 clients; one has latest sources, the other one is installed 
> via the iso-image of January's fbsd snapshot;  on both systems openldap 
> client and sasl is installed (all ldap/cyrus versions on all hosts mentioned 
> in this email are the same). My laptop has fbsd8-i386 stable (sources 25 
> January 2010), and on my laptop I have setup an fbsd8-stable i386 (snapshot 
> iso image) on a virtualbox client. Lastly, on the esxi host I have setup 
> another fbsd8-stable amd64 system, to act as an ldap client (latest sources).
>
> To summarize, and put a label-number on each host, we have:
>
> 1 - esxi: fbsd8(latest) amd64 openldap server
> 2 - esxi: fbsd8(latest) i386 openldap client
> 3 - esxi: fbsd8(snapshot) i386 openldap client
> 4 - esxi: fbsd8(latest) amd64 openldap client
> 5 - laptop: fbsd8(jan 25) i386 openldap client
> 6 - laptop/vbox: fbsd8(snapshot) i386 openldap client
>
> The openldap server is installed in a jail, and the client is tested in the 
> same jail.
>
> Kerberos works on all machines (same /etc/krb5.conf), and ldap as well.
>
> In all machines, line 96 of /usr/bin/krb5-config is changed to read:
>
> lib_flags="$lib_flags -lgssapi -lgssapi_spnego -lgssapi_krb5  -lheimntlm"
>
> instead of:
> lib_flags="$lib_flags -lgssapi -lheimntlm"
>
> which was the default, since without these lines I couldn't get gssapi 
> authentication to work for cyrus (and spnego). This change was made after 
> recommendations given from this very mailing list, and I was very happy to 
> see that the ldap server worked as I expected.
>
> On all system, cat /usr/local/etc/openldap/ldap.conf:
>
> BASE    dc=ee,dc=auth,dc=gr
> URI    ldap://ldap.ee.auth.gr
> SASL_MECH    GSSAPI
>
>
> without kiniting in any client I get the following outcomes when I give 
> ldapwhoami (with no arguments):
>
> 1:
> SASL/GSSAPI authentication started
> ldap_sasl_interactive_bind_s: Local error (-2)
>    additional info: SASL(-1): generic failure: GSSAPI Error:  Miscellaneous 
> failure (see text) (unknown mech-code 2 for mech unknown)
>
> which is expected.
>
> 2:
> SASL/GSSAPI authentication started
> Segmentation fault: 11 (core dumped)
>
> which is not rational at all
>
> 3:
> SASL/GSSAPI authentication started
> Segmentation fault: 11 (core dumped)
>
> 4:
> SASL/GSSAPI authentication started
> ldap_sasl_interactive_bind_s: Local error (-2)
>    additional info: SASL(-1): generic failure: GSSAPI Error:  Miscellaneous 
> failure (see text) (unknown mech-code 2 for mech unknown)
>
> which is the same as 1 (as expected)
>
> 5:
> SASL/GSSAPI authentication started
> Segmentation fault: 11 (core dumped)
>
> 6:
> SASL/GSSAPI authentication started
> Segmentation fault: 11 (core dumped)
>
> if I kinit to mamalos, ldapwhoami returns:
>
> 1:
> SASL/GSSAPI authentication started
> SASL username: mamalos@EE.AUTH.GR
> SASL SSF: 56
> SASL data security layer installed.
> dn:uid=mamalos,ou=people,dc=ee,dc=auth,dc=gr
>
> which is super!
>
> 2:
> SASL/GSSAPI authentication started
> Segmentation fault: 11 (core dumped)
>
> which is dramatic.
>
> 3:
> SASL/GSSAPI authentication started
> Segmentation fault: 11 (core dumped)
>
> 4:
> SASL/GSSAPI authentication started
> ldap_sasl_interactive_bind_s: Local error (-2)
>    additional info: SASL(-1): generic failure: GSSAPI Error:  Miscellaneous 
> failure (see text) (unknown mech-code 2529638919 for mech unknown)
>
> which is very strange, since mech-code seems unnaturally large.
>
> 5:
> SASL/GSSAPI authentication started
> SASL username: mamalos@EE.AUTH.GR
> SASL SSF: 56
> SASL data security layer installed.
> dn:uid=mamalos,ou=people,dc=ee,dc=auth,dc=gr
>
> which is super, but without kinit the same command segfaulted on this machine
>
> 6:
> SASL/GSSAPI authentication started
> SASL username: mamalos@EE.AUTH.GR
> SASL SSF: 56
> SASL data security layer installed.
> dn:uid=mamalos,ou=people,dc=ee,dc=auth,dc=gr
>
> which is the exact same behavior as 5 above.
>
> All this means that there is no single pattern!!!!!!!
>
> If I gdb ldapwhoami in the clients that segfault, I get:
>
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i386-marcel-freebsd"...(no debugging symbols 
> found)...
> (gdb) run -d0
> Starting program: /usr/local/bin/ldapwhoami -d0
> (no debugging symbols found)...(no debugging symbols found)...(no debugging 
> symbols found)...(no debugging symbols found)...(no debugging symbols 
> found)...(no debugging symbols found)...(no debugging symbols found)...(no 
> debugging symbols found)...(no debugging symbols found)...(no debugging 
> symbols found)...(no debugging symbols found)...(no debugging symbols 
> found)...(no debugging symbols found)...(no debugging symbols found)...(no 
> debugging symbols found)...(no debugging symbols found)...(no debugging 
> symbols found)...(no debugging symbols found)...(no debugging symbols 
> found)...(no debugging symbols found)...(no debugging symbols found)...(no 
> debugging symbols found)...(no debugging symbols found)...(no debugging 
> symbols found)...(no debugging symbols found)...(no debugging symbols 
> found)...(no debugging symbols found)...(no debugging symbols found)...(no 
> debugging symbols found)...SASL/GSSAPI authentication started
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x2831e187 in free () from /lib/libc.so.7
> (gdb) where
> #0  0x2831e187 in free () from /lib/libc.so.7
> #1  0x2850fb82 in gss_release_buffer () from /usr/lib/libgssapi.so.10
> #2  0x2850f552 in gss_release_name () from /usr/lib/libgssapi.so.10
> #3  0x2850bea9 in gss_init_sec_context () from /usr/lib/libgssapi.so.10
> #4  0x283f9abf in gssapi_client_mech_step () from 
> /usr/local/lib/sasl2/libgssapiv2.so.2
> #5  0x280e84b1 in sasl_client_step () from /usr/local/lib/libsasl2.so.2
> #6  0x28443100 in ?? ()
> #7  0x00000000 in ?? ()
> #8  0x00000000 in ?? ()
> #9  0xbfbfe968 in ?? ()
> #10 0xbfbfe954 in ?? ()
> #11 0xbfbfe964 in ?? ()
> #12 0x28445860 in ?? ()
> #13 0x280e83fe in sasl_client_step () from /usr/local/lib/libsasl2.so.2
> #14 0xbfbfe8a8 in ?? ()
> #15 0x280e9135 in sasl_client_start () from /usr/local/lib/libsasl2.so.2
> #16 0x00000000 in ?? ()
> #17 0x00000000 in ?? ()
> #18 0xbfbfe968 in ?? ()
> #19 0xbfbfe954 in ?? ()
> #20 0xbfbfe964 in ?? ()
> #21 0xd7a3b2da in ?? ()
> #22 0x283abad8 in ?? () from /lib/libc.so.7
> #23 0x00000000 in ?? ()
> #24 0x283ab730 in __stderrp () from /lib/libc.so.7
> #25 0xbfbfe878 in ?? ()
> #26 0x2838c764 in vfprintf () from /lib/libc.so.7
> Previous frame inner to this frame (corrupt stack?)
>
> I built openldap and cyrus-sasl on this machine from sources (not ports), and 
> (after a long time of trying to find out how to run configure successfully in 
> both installations) the outcome was exactly the same (meaning segfaults). So, 
> one of my admins wrote a c program that overrides gss_release_buffer 
> returning always 0 (what is expected after normal operation) and compiled it 
> as a library. The program code is nothing more than just:
>
> int gss_release_buffer(void *a, void *b) {
>  return 0;
> }
>
> we ld_preloaded the library, and when we ran ldapwhoami the outcome was:
> SASL/GSSAPI authentication started
> ldap_sasl_interactive_bind_s: Local error (-2)
>    additional info: SASL(-1): generic failure: GSSAPI Error:  Miscellaneous 
> failure (see text) (unknown mech-code 2529638919 for mech unknown)
>
> When we ran it with no kerberos tickets, we got:
>
> SASL/GSSAPI authentication started
> ldap_sasl_interactive_bind_s: Local error (-2)
>    additional info: SASL(-1): generic failure: GSSAPI Error:  Miscellaneous 
> failure (see text) (unknown mech-code 2 for mech unknown)
>
> The exact same errors as the aforementioned client 4 (esxi, 
> amd64)!!!!!!!!!!!!!
>
> What on earth is happening?!?!!?!?!
>
> Now one can easily see that there is a definite problem regarding memory 
> freeing, and after overcoming that the mech-code 2529638919 implies that some 
> segment in memory is overwritten by some "random" value, so mech-code returns 
> the number 2529638919 instead of a number of marginality 1.
>
> What is more definite, is that openldap doesn't work out-of-the-box if gssapi 
> support is required, and behaves randomly in different 
> architectures/virtualHosts/platforms.
>
> The problem may have been something related to line 96 in 
> /usr/bin/krb5-config... I don't know.
>
> What is sure, is that I am having second thoughts on using fbsd as my 
> openldap/heimdal server for my setup, which would be quite disappointing for 
> me, since I am using fbsd for the last many-many years, on all my laptops and 
> servers. The only "good part" is that the only machine that works seamlessly 
> (until now, at least) is the heimdal/ldap server.
>
> Thank you all in advance and I hope that we will find an answer to all this.
>
>

This is a lot of information to consume.

Lets start with this:

All of the machines in question are of some form of FreeBSD 8.

You enter gdb and very clearly it starts whining about a segfault 
& libc.so.7

Did you happen to upgrade these clients & server from FreeBSD 7 ?

AFAIK the libc version on FreeBSD 8 was bumped to libc.so.8

If you upgraded and from source did you run make delete-old and make 
delete-old-libs after your make install and after your mergemaster ?

Will wait here for results.

Best wishes.

-- 

  jhell




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1002120141001.9069>