[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#4409) (back-ldap?) livelock in slapd
On Thu, 2006-02-16 at 22:12 +0000, ando@sys-net.it wrote:
> Looks like all your threads are stuck with the same connection, all
> waiting for one of them to succeed in binding. There appears to be a
> deadlock condition, which should be solved somehow.
> Basically, ldap_back_getconn() should not let a connection be acquired
> before it becomes bound. Simply giving up the connection in that loop
> would cause some operations to temporarily fail, which may not be the
> best solution.
I have applied a patch to HEAD that should fix this issue. I haven't
been able to create the issue by normally running slapd, but I could
create it by running slapd under gdb and manually setting lc_refcnt as
if there were multiple threads requesting the same connection so that
more than one is simultaneously __after__ ldap_back_getconn() and
__before__ ldap_back_dobind_int(). This should now be handled safely.
The fix consists in
back-ldap/back-ldap.h 1.87 -> 1.88
back-ldap/bind.c 1.153 -> 1.154
I think you should be able to apply them to re23 code. Please test and
report.
p.
Ing. Pierangelo Masarati
Responsabile Open Solution
OpenLDAP Core Team
SysNet s.n.c.
Via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
------------------------------------------
Office: +39.02.23998309
Mobile: +39.333.4963172
Email: pierangelo.masarati@sys-net.it
------------------------------------------