[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#3617) ldap_modrdn2 hangs a slapd server

Full_Name: Carlo Contavalli
Version: 2.2.23
OS: Debian GNU/Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (

  ok, openldap 2.2.23, hdb backend, sometimes, slapd hangs
while one of our application calls:

        ldap_modrdn2(ld, dn, newrdn, deleteoldrdn)

  I can reproduce this problem quite regularly. I attached gdb,
and seems like the slapd thread in charge of handling the
request is looping over (back-bdb/cache.c:981):

980   [...]
981   for ( pei = ein; pei->bei_parent; pei = pei->bei_parent ) {
982     if ( pei->bei_modrdns > max ) max = pei->bei_modrdns;
983   }
984   [...]

  by printing the content of pei, I can clearly see pei->bei_parent,
at a certain point, loops back to the first entry, thus causing an
infinite loop. That piece of code is executed while the bdb_cache_entryinfo
is locked, thus causing the whole slapd process to stop.

  I have looked to the 2.2.24 changelog, and doesn't seem like
this problem has been solved.
  If you need further information, please let me know.