Never mind. This works for me on a local VM. The build server has a
bunch of outdated packages so I'm going to blame that build environment
unless proven otherwise. Closing the ITS; sorry for the noise.
Full_Name: Ryan Tandy
Version: 2.4.46
OS: Debian
URL:
Submission from: (NULL) (70.66.128.207)
Submitted by: ryan
On Debian GNU/kFreeBSD (Debian with GNU userland and FreeBSD kernel), liblmdb
and back-mdb compile but slapd apparently fails to start.
Build log: https://buildd.debian.org/status/fetch.php?pkg=openldap&arch=kfreebsd-amd64…
>>>>> Executing all LDAP tests for mdb
>>>>> Starting test000-rootdse for mdb...
running defines.sh
Starting slapd on TCP/IP port 9011...
Using ldapsearch to retrieve the root DSE...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
../../../tests/scripts/test000-rootdse: 66: kill: No such process
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
>>>>> Test failed
>>>>> test000-rootdse failed for mdb
This is a low priority issue. Just filing the ITS for tracking. More details to
come once I find time to install a VM and compile/run it myself. Probably
similar to ITS#8554.
Debian bug reference: https://bugs.debian.org/898070
bisect identifies c365ac359e9c9b483b934c2a1f0bc552645c32fa as the commit
that introduced this behaviour.
003dfbda574f37bbf1a2240f530ff9fa35ab0801 on RE24 (2.4.20)
commit c365ac359e9c9b483b934c2a1f0bc552645c32fa
Author: Howard Chu <hyc(a)openldap.org>
Date: Sun Nov 22 04:42:00 2009 +0000
ITS#6368 use dup'd entries in response queue
Full_Name: Ryan Tandy
Version: 2.4.46
OS: Debian
URL: ftp://ftp.openldap.org/incoming/20180511_rtandy_syncrepl-memory-consumer.tgz
Submission from: (NULL) (70.66.128.207)
Submitted by: ryan
When running object-based syncrepl, and making changes to groups, the provider
slapd uses more and more memory, apparently without bound.
We've discussed this issue before but there was no ITS tracking it
specifically.
original Debian bug: https://bugs.debian.org/725091
and a possibly related openldap-technical post:
https://www.openldap.org/lists/openldap-technical/201503/msg00206.html
reproducer: ftp://ftp.openldap.org/incoming/20180511_rtandy_syncrepl-memory-consumer.tgz
./prepare
./runslapd (backgrounds a provider slapd and a consumer slapd)
./modify (makes a number of modifications on the provider)
./clean (kills both slapds and cleans databases)
Run top in another terminal and watch the memory growth. On my system, the
provider grows to over 3 GB resident and does not shrink even after replication
completes. with delta-syncrepl enabled, the producer's RSS is only around 10
MB.
Reproduced on Debian unstable with 2.4.46 and glibc malloc (glibc 2.27-3) and
tcmalloc_minimal (2.7-1).
Full_Name: Povilas Brilius
Version: 2.4.45
OS: Gentoo
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (217.17.80.180)
Excerpt from Gentoo net-nds/openldap build log:
* QA Notice: Package triggers severe warnings which indicate that it
* may exhibit random runtime failures.
* /var/tmp/portage/net-nds/openldap-2.4.45/work/openldap-2.4.45/libraries/libldap/open.c:251:7:
warning: implicit declaration of function ‘ldap_is_ldapc_url’; did you mean
‘ldap_is_ldapi_url’? [-Wimplicit-function-declaration]
* /var/tmp/portage/net-nds/openldap-2.4.45/work/openldap-2.4.45/libraries/libldap_r/thr_posix.c:93:9:
warning: implicit declaration of function ‘pthread_setconcurrency’; did you mean
‘pthread_setcanceltype’? [-Wimplicit-function-declaration]
* /var/tmp/portage/net-nds/openldap-2.4.45/work/openldap-2.4.45/libraries/libldap_r/thr_posix.c:107:9:
warning: implicit declaration of function ‘pthread_getconcurrency’; did you mean
‘ldap_pvt_thread_get_concurrency’? [-Wimplicit-function-declaration]
* open.c:251:7: warning: implicit declaration of function ‘ldap_is_ldapc_url’;
did you mean ‘ldap_is_ldapi_url’? [-Wimplicit-function-declaration]
* /var/tmp/portage/net-nds/openldap-2.4.45/work/openldap-2.4.45/libraries/libldap/open.c:251:7:
warning: implicit declaration of function ‘ldap_is_ldapc_url’; did you mean
‘ldap_is_ldapi_url’? [-Wimplicit-function-declaration]
* /var/tmp/portage/net-nds/openldap-2.4.45/work/openldap-2.4.45/libraries/libldap_r/thr_posix.c:93:9:
warning: implicit declaration of function ‘pthread_setconcurrency’; did you mean
‘pthread_setcanceltype’? [-Wimplicit-function-declaration]
* /var/tmp/portage/net-nds/openldap-2.4.45/work/openldap-2.4.45/libraries/libldap_r/thr_posix.c:107:9:
warning: implicit declaration of function ‘pthread_getconcurrency’; did you mean
‘ldap_pvt_thread_get_concurrency’? [-Wimplicit-function-declaration]
* open.c:251:7: warning: implicit declaration of function ‘ldap_is_ldapc_url’;
did you mean ‘ldap_is_ldapi_url’? [-Wimplicit-function-declaration]
* Please do not file a Gentoo bug and instead report the above QA
* issues directly to the upstream developers of this software.
* Homepage: http://www.OpenLDAP.org/
Full_Name: Ondrej Kuznik
Version: master
OS:
URL: https://github.com/mistotebe/openldap/tree/ITS8850
Submission from: (NULL) (82.10.24.68)
At the moment, libldap_r only supports one thread pool. Closing and freeing that
pool is currently done in a single step.
If there is a side thread that wants to schedule work into this global pool,
there is currently a (short) window when the thread pool is being destroyed and
that thread has not been notified yet (which only happens after the main slapd
threads have already finished). If a thread tries to schedule more work to be
done, it might trample onto memory/mutexes that have already been released.
The linked patch outlines a solution to the problem by separating
ldap_pvt_thread_pool_destroy into a part that shuts down the pool and the actual
deconstruction. slapd is adapted to call the shutdown at the shutdown point and
only destroy the pool after all backends have been closed.
Tries to maintain backward compatibility.
Any feedback is welcome.
Full_Name: Ondrej Kuznik
Version: master
OS:
URL: https://github.com/mistotebe/openldap/tree/ITS8849
Submission from: (NULL) (82.10.24.68)
If a backend needs to handle its own long-running threads on the side, it might
need to be notified to pause while a config modification is underway and when it
is finished.
This is the case of the load balancer module, which registers itself as a module
and maintains its own threads and needs to know when a server (or even its own)
reconfiguration is in progress.
The linked patches provide one of the possible implementations, they introduce
the hooks to pause and unpause the server, use them in bconfig.c and add two new
backend hooks that are consulted while this is happening.
On Tue, May 08, 2018 at 04:09:12PM +0000, hyc(a)symas.com wrote:
> ondra(a)mistotebe.net wrote:
>> The issue is actually allowing existing controls to be used with newly
>> registered exops, since the only way to declare the compatibility would
>> be by re-registering the control. Problem there is that built-in
>> controls have everything static to controls.c, so it's not even possible
>> to do that.
>>
>> A solution would be to add another piece of API that receives a pair of
>> (control OID, exop OID), finds the control and adds the OID to the
>> sc_extendedops(bv) lists.
>>
>> Going to do just that (register_control_exop() a decent name?).
This implementation is in the ITS8845 branch of my GitHub repo:
https://github.com/mistotebe/openldap/tree/ITS8845
--
OndÅ™ej KuznÃk
Senior Software Engineer
Symas Corporation http://www.symas.com
Packaged, certified, and supported LDAP solutions powered by OpenLDAP