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

(ITS#6484) slapd 2.4.21 + pcache + rwm coredump



Full_Name: Matt Hardin
Version: 2.4.21
OS: Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (170.215.92.245)


A naming context that uses back-ldap, slapo-rwm, and slapo-pcache dumps core
when asked to perform an operation.

Configuration snippets:

database	ldap
suffix		"dc=ad,dc=example,dc=com"
subordinate
rootdn		"dc=ad,dc=example,dc=com"
uri	"ldaps://ldap01.example.com ldaps://ldap02.example.com"

norefs		yes
chase-referrals	no
conn-ttl	300
network-timeout 10
use-temporary-conn yes

# Identity assertion: connections authenticated as either of the two identities
# below will connect to AD as the proxy user. Connections authenticated as
# anything else (i.e., AD users) use those credentials for authentication.
idassert-bind	bindmethod=simple
		binddn="cn=cnsproxy,dc=example,dc=com"
		credentials=xxxxxx
		mode=legacy
		flags=override

idassert-authzFrom	"dn.regex:cn=proxy,dc=example,dc=com"

# It is necessary to map a number of objectclass and attribute names to
# various other names that are supported in RFC2307. We also take this
# opportunity to 'lose' certain other attributes that have no place in
# UNIX.
overlay		rwm
rwm-normalize-mapped-attrs yes
rwm-suffixmassage   "dc=ad,dc=example,dc=com" "dc=example,dc=com"
rwm-map		objectClass	posixAccount	user
rwm-map		attribute	uid		samAccountName
rwm-map		attribute	""		gecos

[lots of rwm-map statements removed]

# Caching setup
overlay		pcache
proxycache	hdb 100000 2 10000 50000
proxycachequeries 20000

proxyattrset	0 uid userPassword uidNumber gidNumber cn homeDirectory loginShell
gecos description objectClass memberUid member
proxyattrset	1 *
#
proxytemplate	(&(objectClass=)(uid=)) 0 3600 300
proxytemplate	(&(objectClass=)(uid=)) 1 3600 300
proxytemplate	(&(objectClass=)(uidNumber=)) 0 3600 300
proxytemplate	(&(objectClass=)(member=)) 0 3600 300
proxytemplate	(&(objectClass=)(|(memberUid=)(member=))) 0 3600 300
proxytemplate	(uid=) 0 3600 300
proxytemplate	(&(objectClass=)(cn=)) 0 3600 300
proxytemplate	(&(objectClass=)(gidNumber=)) 0 3600 300
proxytemplate	(objectClass=*) 0 3600 300
#
directory	/var/symas/openldap-data/example-pcache
cachesize	10000
idlcachesize	10000
checkpoint	512	600
sizelimit	unlimited

index		objectClass	eq
index		cn,sn,uid	eq
index   	uidNumber	eq
index		gidNumber	eq
index		memberUid	eq
index		member		eq
index		queryid		eq

dbconfig	set_cachesize 0 536870912 0
dbconfig	set_flags DB_LOG_AUTOREMOVE
dbconfig	set_lg_max 10485760
dbconfig	set_lg_bsize 2097152


Backtrace is as follows:

(gdb) thr apply all bt

Thread 5 (process 19756):
#0  0x0083d7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00abc297 in pthread_join () from /lib/tls/libpthread.so.0
#2  0x00608524 in ldap_pvt_thread_join (thread=4294967292,
thread_return=0xfffffffc)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/libraries/libldap_r/thr_posix.c:197
#3  0x0806f48a in slapd_daemon () at
/home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/daemon.c:2840
#4  0x0805896d in main (argc=7, argv=0xbfe4d694)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/main.c:961

Thread 4 (process 19757):
#0  0x0083d7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x0070a1ce in epoll_wait () from /lib/tls/libc.so.6
#2  0x0806e505 in slapd_daemon_task (ptr=0x0)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/daemon.c:2465
#3  0x00abb3cc in start_thread () from /lib/tls/libpthread.so.0
#4  0x00709b4e in clone () from /lib/tls/libc.so.6

Thread 3 (process 19759):
#0  0x0083d7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00abdcf6 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/tls/libpthread.so.0
#2  0x00608664 in ldap_pvt_thread_cond_wait (cond=0xfffffffc, mutex=0xfffffffc)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/libraries/libldap_r/thr_posix.c:277
#3  0x00607822 in ldap_int_thread_pool_wrapper (xpool=0x82c56f0)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/libraries/libldap_r/tpool.c:672
#4  0x00abb3cc in start_thread () from /lib/tls/libpthread.so.0
---Type <return> to continue, or q <return> to quit---
#5  0x00709b4e in clone () from /lib/tls/libc.so.6

Thread 2 (process 19760):
#0  0x0083d7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00abdcf6 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/tls/libpthread.so.0
#2  0x00608664 in ldap_pvt_thread_cond_wait (cond=0xfffffffc, mutex=0xfffffffc)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/libraries/libldap_r/thr_posix.c:277
#3  0x00607822 in ldap_int_thread_pool_wrapper (xpool=0x82c56f0)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/libraries/libldap_r/tpool.c:672
#4  0x00abb3cc in start_thread () from /lib/tls/libpthread.so.0
#5  0x00709b4e in clone () from /lib/tls/libc.so.6

Thread 1 (process 19758):
#0  0x0083d7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00665825 in raise () from /lib/tls/libc.so.6
#2  0x00667289 in abort () from /lib/tls/libc.so.6
#3  0x0065eda1 in __assert_fail () from /lib/tls/libc.so.6
#4  0x0807bc34 in entry_clean (e=0x835ccdc)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/entry.c:483
#5  0x0807bc52 in entry_free (e=0x835ccdc)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/entry.c:514
#6  0x080da90e in overlay_entry_release_ov (op=0x838b5a0, e=0x835ccdc, rw=0,
on=0x82fcb50)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/backover.c:439
#7  0x0093aa55 in rwm_send_entry (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/overlays/rwm.c:1508
#8  0x0093b129 in rwm_response (op=0x838b5a0, rs=0x6)
---Type <return> to continue, or q <return> to quit---
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/overlays/rwm.c:1700
#9  0x080da44a in over_back_response (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/backover.c:237
#10 0x08081be0 in slap_response_play (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/result.c:358
#11 0x0808439b in slap_send_search_entry (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/result.c:843
#12 0x00bd8005 in hdb_search (op=0x838b5a0, rs=0x3a1a100) at search.c:961
#13 0x00a7d495 in pcache_op_search (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/overlays/pcache.c:3029
#14 0x080dad59 in overlay_op_walk (op=0x838b5a0, rs=0x3a1a100, which=op_search,
oi=0x82fca50, 
    on=0x8303408) at
/home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/backover.c:659
#15 0x080daebc in over_op_func (op=0x838b5a0, rs=0x3a1a100, which=op_search)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/backover.c:721
#16 0x080d8f18 in glue_op_search (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/backglue.c:457
#17 0x080dad59 in overlay_op_walk (op=0x838b5a0, rs=0x3a1a100, which=op_search,
oi=0x8302778, 
    on=0x8302878) at
/home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/backover.c:659
#18 0x080daebc in over_op_func (op=0x838b5a0, rs=0x3a1a100, which=op_search)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/backover.c:721
#19 0x08074b36 in fe_op_search (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/search.c:366
#20 0x08074041 in do_search (op=0x838b5a0, rs=0x3a1a100)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/search.c:217
#21 0x08072205 in connection_operation (ctx=0x3a1a210, arg_v=0x838b5a0)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/connection.c:1109
---Type <return> to continue, or q <return> to quit---
#22 0x08072b54 in connection_read_thread (ctx=0x3a1a210, argv=0x18)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/servers/slapd/connection.c:1245
#23 0x006077c6 in ldap_int_thread_pool_wrapper (xpool=0x82c56f0)
    at /home/build/sol-2.4.21.0/sol24x/ldap24/libraries/libldap_r/tpool.c:685
#24 0x00abb3cc in start_thread () from /lib/tls/libpthread.so.0
#25 0x00709b4e in clone () from /lib/tls/libc.so.6
(gdb) q


Commentary from debugging session:

the entry in question is owned by pcache's cache DB
and the overlay_entry_release() function
didn't fall into the right release hook
because the pcache overlay didn't provide one
so this has to be fixed by adding a release hook to pcache
not a big deal.
so the fault isn't in rwm this time, it's calling the right API