[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
openldap bug: libldap mutex hang on ldap_int_sasl_mutex
- To: openldap-technical@openldap.org
- Subject: openldap bug: libldap mutex hang on ldap_int_sasl_mutex
- From: Jeremiah Martell <inlovewithgod@gmail.com>
- Date: Wed, 7 Apr 2010 15:07:34 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:received:message-id :subject:from:to:content-type:content-transfer-encoding; bh=3sA9jpxRu26ZUl4TZURwYH7pzv6QYl4c7gIOAgnPlpY=; b=T6IVlnHlyc1aMuwmACmOrmw0+rTfMICUvh/eW3SXNWTKfTvjliY230SY2Y807a7Okx TkwWcAPfaUXg0vQOgwTcX52aYvDQ9gRC+yLF4XNpBSMT9G2m8E6Bs6+xzpdseF7a7kVy Akjt+MIxCtqDiR2rGwKU91JfoTMNujQbPaJYw=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=ufRkt24W94DQMRQSbIZpilc7ofj5DGRQfpkORDzypxIUBkH27Y9dEemA3veZPe3I3J zb0MmXPwlxb/7qiMVSt5msEEt5YiSGoe71dZgzs811uqL5UmLF4EfsFPokqFtrHM+UR7 UdiQxqSxjMloaLu8DcogZNekQjTNgoUmkEtFA=
After digging into this more, this definitely looks like a bug in openldap.
I modified openldap to make all mutex's recursive.
Then my GSSAPI rebind proc worked properly, and the search searched
all referrals and found the result (two referrals later).
Thanks,
- Jeremiah
---------- Forwarded message ----------
From: Jeremiah Martell <inlovewithgod@gmail.com>
Date: Mon, Mar 29, 2010 at 3:11 PM
Subject: libldap mutex hang on ldap_int_sasl_mutex
To: openldap-technical@openldap.org
I'm using openldap-2.4.18, library libldap_r.
I have three windows active directory servers setup:
childA.parent.example.com
parent.example.com
childB.parent.example.com
I do a LDAP+GSSAPI bind to childA.parent.example.com.
The bind succeeds.
I do a search that returns referrals, (I know I need to be referred to
parent, and then childB in order to find my result),
and I have openldap follow referrals for me.
My rebind proc is a function that only calls:
ldap_sasl_interactive_bind_s( ld, NULL, NULL, NULL, NULL,
LDAP_SASL_AUTOMATIC, sasl_driver, params );
where sasl_driver and params is the same parameters that I used for
the initial bind call to childA.
After the seach call, the debug it looks like this:
> ldap_chase_v3referrals, where ref[0] = parent.example.com
> myGSSAPIrebindProc
> ldap_sasl_interactive_bind_s
< ldap_sasl_interactive_bind_s
< myGSSAPIrebindProc
< ldap_chase_v3referrals
> ldap_chase_v3referrals, where ref[0] = childB.parent.example.com
> myGSSAPIrebindProc
> ldap_sasl_interactive_bind_s
> ldap_chase_v3referrals, where ref[0] = childA.parent.example.com
< ldap_chase_v3referrals
> ldap_chase_v3referrals, where ref[0] =
ForestDnsZones.parent.example.com
> myGSSAPIrebindProc
> ldap_sasl_interactive_bind_s ... HANG ON MUTEX
Since this is hanging on a mutex, that would suggest a code bug.
Perhaps the ldap_int_sasl_mutex needs to be a recursive mutex?
Or should my rebind proc do something different than call
ldap_sasl_interactive_bind_s?
Any other ideas appreciated too.
Thanks,
- Jeremiah
--
- Jeremiah Martell
http://inlovewithGod.com