https://bugs.openldap.org/show_bug.cgi?id=9966
Issue ID: 9966
Summary: slapd crashes in pcache consistency_check()
Product: OpenLDAP
Version: 2.5.13
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: overlays
Assignee: bugs(a)openldap.org
Reporter: aweits(a)rit.edu
Target Milestone: ---
The pcache overlay (when run with multiple templates) crashes in the
consistency checker. Cause appears to be that "expires" is not reset for the
next iteration of the template loop. I can provide more details if necessary.
Server does not crash with this in place:
diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c
index 423c19641e72..7b9e2061f927 100644
--- a/servers/slapd/overlays/pcache.c
+++ b/servers/slapd/overlays/pcache.c
@@ -3628,6 +3628,8 @@ consistency_check(
if ( rem ) free_query(query);
}
+ expires = NULL;
+
/* handle refreshes that we skipped earlier */
if ( templ->ttr ) {
ldap_pvt_thread_rdwr_rlock(&templ->t_rwlock);
valgrind says:
==217138== Thread 13:
==217138== Invalid read of size 8
==217138== at 0x63949EE: consistency_check (pcache.c:3604)
==217138== by 0x48A5DB9: ldap_int_thread_pool_wrapper (tpool.c:1053)
==217138== by 0x5016801: start_thread (in /usr/lib64/libc.so.6)
==217138== by 0x4FB6313: clone (in /usr/lib64/libc.so.6)
==217138== Address 0x6d14c60 is 160 bytes inside a block of size 240 free'd
==217138== at 0x48470E4: free (vg_replace_malloc.c:872)
==217138== by 0x63949DE: UnknownInlinedFun (pcache.c:1548)
==217138== by 0x63949DE: consistency_check (pcache.c:3628)
==217138== by 0x48A5DB9: ldap_int_thread_pool_wrapper (tpool.c:1053)
==217138== by 0x5016801: start_thread (in /usr/lib64/libc.so.6)
==217138== by 0x4FB6313: clone (in /usr/lib64/libc.so.6)
==217138== Block was alloc'd at
==217138== at 0x484486F: malloc (vg_replace_malloc.c:381)
==217138== by 0x48C8804: ber_memalloc_x (memory.c:228)
==217138== by 0x4598C2: ch_malloc (in /usr/local/libexec/slapd)
==217138== by 0x6391276: add_query (pcache.c:1562)
==217138== by 0x639ADEF: pcache_op_cleanup (pcache.c:2376)
==217138== by 0x52498D: ??? (in /usr/local/libexec/slapd)
==217138== by 0x452C32: ??? (in /usr/local/libexec/slapd)
==217138== by 0x4536BC: slap_send_ldap_result (in /usr/local/libexec/slapd)
==217138== by 0x4CF9EA: ldap_back_search (in /usr/local/libexec/slapd)
==217138== by 0x4BD022: overlay_op_walk (in /usr/local/libexec/slapd)
==217138== by 0x4BD1A0: ??? (in /usr/local/libexec/slapd)
==217138== by 0x4415D8: fe_op_search (in /usr/local/libexec/slapd)
==217138==
Happy Holidays!
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9929
Issue ID: 9929
Summary: slapo-dynlist unnecessary search for dynamic lists
Product: OpenLDAP
Version: 2.5.12
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: overlays
Assignee: bugs(a)openldap.org
Reporter: hyc(a)openldap.org
Target Milestone: ---
An extra initial search is performed by slapo-dynlist to make dynamic groups
filterable. This search is not needed for dynamic lists, but is still
occurring.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9924
Issue ID: 9924
Summary: Increased/RunAway memory usage slapo-deref
Product: OpenLDAP
Version: 2.5.13
Hardware: x86_64
OS: Linux
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: overlays
Assignee: bugs(a)openldap.org
Reporter: erikdewaard(a)gmail.com
Target Milestone: ---
Created attachment 916
--> https://bugs.openldap.org/attachment.cgi?id=916&action=edit
slapd.conf
Increased/RunAway memory usage slapo-deref
Running: 2.5.13
After enabling slapo-deref slapd memory usage increased and growing.
I can reproduce this on every consumer with deref enabled.
From:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
173229 ldap 20 0 26.6g 1.0g 941996 S 4.0 0.8 3674:19 slapd
To:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2745810 ldap 20 0 141.5g 115.8g 468940 S 3.0 92.5 312:42.93 slapd
How best to debug this?
I should probably recompile to get all symbols for slapd available.
#valgrind.sh
valgrind --leak-check=full \
--show-leak-kinds=all \
--extra-debuginfo-path=/usr/lib/debug/usr/lib64/openldap \
--allow-mismatched-debuginfo=yes \
--track-origins=yes \
--error-limit=no \
--verbose \
--log-file=valgrind-out.txt \
/usr/sbin/slapd -F /etc/openldap/slapd.d -u ldap -h "ldap:///
ldaps:/// ldapi:///"
#mleak.sh
LD_PRELOAD=/tmp/mleak/mleak.so \
/usr/sbin/slapd -F /etc/openldap/slapd.d -u ldap -h "ldap:/// ldaps:///
ldapi:///"
sent kill -2
#mleak_report.sh
./mdump /usr/sbin/slapd ml.*
./report.sh | more
fncdump: Cant open linux-vdso.so.1
Memory leaks (14480 total):
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9915
Issue ID: 9915
Summary: Changing slapo-unique to use serialize causes
cn=config replication to fail
Product: OpenLDAP
Version: 2.6.3
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: overlays
Assignee: bugs(a)openldap.org
Reporter: quanah(a)openldap.org
Target Milestone: ---
I updated my slapo-unique configuration from:
olcUniqueURI: ldap:///?uid?sub?
to
olcUniqueURI: "serialize ldap:///?uid?sub?"
and replication of the config database fails with the following error:
syncrepl_null_callback: error code 0x50
syncrepl_entry: rid=001 be_modify
olcOverlay={2}unique,olcDatabase={2}mdb,cn=config (80)
syncrepl_entry: rid=001 be_modify failed (80)
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9897
Issue ID: 9897
Summary: ldapcompare return FALSE when dynlist in use
Product: OpenLDAP
Version: 2.6.3
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: overlays
Assignee: bugs(a)openldap.org
Reporter: sdalu(a)sdalu.com
Target Milestone: ---
The server configuration enable dynlist with:
overlay dynlist
dynlist-attrset groupOfURLs memberURL member
Entry is:
dn: cn=Admins,ou=Services,ou=Members,dc=zog,dc=com
member: uid=foo,ou=People,dc=zog,dc=com
cn: Admins
objectClass: groupOfNames
The ldap compare will return false, was expected true
ldapcompare -x cn=Admins,ou=Services,ou=Members,dc=zog,dc=com
member:uid=foo,ou=People,dc=zog,dc=com
Now if I comment the dynlist-attrset directive, I will get TRUE for the same
ldapcompare request
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9984
Issue ID: 9984
Summary: Balancer listener thread exits when all listeners are
suspended
Product: OpenLDAP
Version: 2.5.13
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: lloadd
Assignee: bugs(a)openldap.org
Reporter: ondra(a)mistotebe.net
Target Milestone: ---
If lloadd runs out of file descriptors, the listeners are paused temporarily,
however the event base is not configured to stick around if all of its tasks
have finished.
In case all of the listeners are paused, the event base exits and listener
thread goes away. A patch is coming.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9983
Issue ID: 9983
Summary: operation_unlink files the operation before it is
fully unlinked
Product: OpenLDAP
Version: 2.5.13
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: lloadd
Assignee: bugs(a)openldap.org
Reporter: ondra(a)mistotebe.net
Target Milestone: ---
In epoch based memory management, objects should only be submitted for
reclaiming when no actors can reach them unless they've done that before the
submission happened.
This is broken in operation_unlink():
It calls try_release_ref() at the beginning where the operation is added to the
to-reclaim list, only then it proceeds to unlink it from other objects.
The following sequence is then possible:
- current_epoch == 1 (no threads are alive in epoch == 0)
- in thread 1 (epoch = 1), try_release_ref() marks the object to be reclaimed
in current_epoch
- thread 2 activates and current_epoch is incremented (current_epoch == 2)
- thread 2 handles an Unbind for the operation's client and reaches
client_reset() (epoch == 2)
- thread 2 (client_reset) snapshots and clears client->c_ops (among other
things, c->c_ops links to our object)
- thread 1 finishes operation_unlink, deactivates and there are no more threads
in epoch == 1
- thread 3 activates and current_epoch is incremented (current_epoch == 3),
there are objects in epoch == 1, namely the object above which is now destroyed
(freed)
- thread 2 wakes up again and tries to call operation_abandon on the above
object, this accesses memory freed
epoch_append (and try_release_ref) should only be called when unlinking has
finished. I'm testing a patch right now.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9947
Issue ID: 9947
Summary: Race in epoch.c
Product: OpenLDAP
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: lloadd
Assignee: bugs(a)openldap.org
Reporter: ondra(a)mistotebe.net
Target Milestone: ---
When epoch_leave() tests whether other threads might still be alive, it can
test things in reverse order, testing too early to catch a thread to come in
and too late to see a thread that just left. If those two saw each other, the
clock would not advance and the data in refs might actually still be a
reachable pointer.
The tests in epoch_leave can actually be simplified leading to machine code not
all compilers could figure out by themselves.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9925
Issue ID: 9925
Summary: Fix some compilation issues around usage of #if and
#ifdef
Product: OpenLDAP
Version: unspecified
Hardware: x86_64
OS: Linux
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: libraries
Assignee: bugs(a)openldap.org
Reporter: connor.smith(a)hitachivantara.com
Target Milestone: ---
Created attachment 918
--> https://bugs.openldap.org/attachment.cgi?id=918&action=edit
git format-patch
I noticed a few issues while working with OpenLDAP that would lead to compiler
warnings and the like in our particular build environment. They're quite minor,
but it would still be good to have them patched upstream.
In include/ac/socket.h:
Use #elif defined(...) for HAVE_WINSOCK and MACOS. All other instances
of these macros use #ifdef or similar. A compiler may warn about them
not being defined.
In libraries/liblber/sockbuf.c, (DOS && PCNFS) and (DOS && NCSA) were
replaced with HAVE_PCNFS and HAVE_NCSA, respectively. It seems logical
to do the same at the only remaining occurrence of DOS, PCNFS, and NCSA.
For context on the latter: the actual warning was about #elif DOS, similar to
#elif HAVE_WINSOCK and #elif MACOS, but looking into it it seemed to make sense
to bring socket.h in line with sockbuf.c.
In libraries/liblunicode/ucdata/ucgendat.c:
Use #if HARDCODE_DATA consistently, replacing two instances of #ifdef.
HARDCODE_DATA is always defined, and this way you can set HARDCODE_DATA
to 0 and have it work, rather than it going down the wrong branch and
failing in these two cases.
An IPR notice, with this work having been done as part of my employment:
The attached file is derived from OpenLDAP Software. All of the
modifications to OpenLDAP Software represented in the following patch
were developed by Hitachi Vantara. Hitachi Vantara has not assigned
rights and/or interest in this work to any party. I, Connor Smith, am
authorized by Hitachi Vantara, my employer, to release this work under
the following terms.
Hitachi Vantara hereby place the following modifications to OpenLDAP
Software (and only these modifications) into the public domain. Hence,
these modifications may be freely used and/or redistributed for any
purpose with or without attribution and/or other notice.
Please let me know if there are any issues with the attached patch, or if
there's anything else I need to do. Thanks.
--
You are receiving this mail because:
You are on the CC list for the issue.