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

Re: calloc failures with concurrent writers (ITS#277)

OpenLDAP 1.2 is NOT preemptive thread safe.  The connection
management code (daemon.c/connection.c) is known to flawed in
design.  OpenLDAP-devel sports a reimplemented connection manager
and is believed to safe in both preemptive and non-preemptive
threading environments.

It is, of course, entirely possible that other unsafe code
exists.  If you discover such, please submit an ITS.

All versions of OpenLDAP are, of course, subject to problems
resultant of linking incompatible libraries and such.  Improper
installation of 3rd party libraries (such as BerkeleyDB, GDBM, REGEX)
is a common problem (especially on systems with errno is sometimes
implemented with a simple global 'int').

As your problem appears to be quite repeatable, I would think
a mismatch of some sort is quite likely.  Regardless, one cannot
ignore the connection management issue.  For this reason, I
recommend use of a non-preemptive threading subsystem (such as
a third party user-thread package) or --without-threads.

If you do have a chance to run 2.0-devel, I appreciate hearing if
it suffers from similiar problems.  This might help to determine
if it's really the connection management code or something else.