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

Provide slapd Aborts on failed assertion




I have a consumer slapd in refreshandpersist mode and a provider slapd
that aborts on the first search operation issued by the consumer.
I've tracked it down to the cachesize option. If I set the cachesize option to
any value, the provider fails an assertion in pthread_mutex_lock.


here is the output from stdout when running the provider in gdb.

send_ldap_result: conn=0 op=1 p=3
slapd: pthread_mutex_lock.c:108: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed.


Here is the contents of the mutex in pthread_mutex_lock
(gdb) up
#7 0xb7eb10c7 in __pthread_mutex_lock (mutex=0x8252b50)
at pthread_mutex_lock.c:54
54 pthread_mutex_lock.c: No such file or directory.
in pthread_mutex_lock.c
(gdb) p *mutex
$1 = {__data = {__lock = 1, __count = 0, __owner = 1000, __kind = 0,
__nusers = 0, __spins = 0},
__size = "\001\000\000\000\000\000\000\000?\003", '\0' <repeats 13 times>,
__align = 1}


Here is the rest of he stack Backtrace

Program received signal SIGABRT, Aborted.
[Switching to Thread -1860699216 (LWP 32141)]
0xb7f95410 in ?? ()
(gdb) bt
#0 0xb7f95410 in ?? ()
#1 0x9117dca4 in ?? ()
#2 0x00000006 in ?? ()
#3 0x00007d8d in ?? ()
#4 0xb7c29041 in *__GI_raise (sig=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#5 0xb7c2a7d7 in *__GI_abort () at ../sysdeps/generic/abort.c:88
#6 0xb7c2279f in *__GI___assert_fail (assertion=0x0, file=0x0, line=0,
function=0xb7eb6fc8 "__pthread_mutex_lock") at assert.c:83
#7 0xb7eb10c7 in __pthread_mutex_lock (mutex=0x8252b50)
at pthread_mutex_lock.c:54
#8 0x0815a7d9 in ldap_pvt_thread_mutex_lock (mutex=0x8252b50)
at thr_posix.c:333
#9 0x08142365 in syncprov_op_search (op=0x82b3f20, rs=0x9117f230)
at syncprov.c:1993
#10 0x080ceb3c in overlay_op_walk (op=0x82b3f20, rs=0x9117f230,
which=op_search, oi=0x8252c18, on=0x8252d08) at backover.c:498
#11 0x080ced6e in over_op_func (op=0x82b3f20, rs=0x9117f230, which=op_search)
at backover.c:560
#12 0x080cedff in over_op_search (op=0x82b3f20, rs=0x9117f230)
at backover.c:582
#13 0x08068fd7 in fe_op_search (op=0x82b3f20, rs=0x9117f230) at search.c:355
#14 0x08068aad in do_search (op=0x82b3f20, rs=0x9117f230) at search.c: 217
#15 0x08065ebb in connection_operation (ctx=0x9117f2c0, arg_v=0x82b3f20)
at connection.c:1133
#16 0x08159859 in ldap_int_thread_pool_wrapper (xpool=0x8232500) at tpool.c:478
#17 0xb7eafc6b in start_thread (arg=0x9117fbb0) at pthread_create.c:261
#18 0xb7cb8d9e in clone () from /lib/libc.so.6
(gdb)
=====================


I am running:
linux 2.6.18.3
glibc-2.3.6
OpenLDAP-2.3.35
BerkeleyDB.4.2 w/ patches

Here is my provider config file:
#
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/local.schema
#
access to dn.base=""
       by * read

# default settings
defaultsearchbase       "dc=umich,dc=edu"
allow           bind_v2 bind_anon_cred bind_anon_dn
#
# file locations
pidfile         /home/pturgyan/openldap-2.3/slapd.prov.pid
argsfile        /home/pturgyan/openldap-2.3/slapd.prov.args
#
threads         32
#
# database settings
database        bdb
suffix          "dc=umich,dc=edu"
rootdn          "cn=root,dc=umich,dc=edu"
rootpw          BD=fast

overlay         syncprov
#syncprov-checkpoint 100 10
#syncprov-sessionlog 100

directory       /var/slapd/tmp/db/db.save
cachesize       1000
idlcachesize    25000
checkpoint      1024 5
lastmod         on
#
include         /home/pturgyan/openldap-2.3/slapd.index

=============================
here is the output from stdout when running the provider in gdb
and a stack backtrace after the abort

send_ldap_result: conn=0 op=1 p=3
slapd: pthread_mutex_lock.c:108: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed.


Program received signal SIGABRT, Aborted.
[Switching to Thread -1860699216 (LWP 32141)]
0xb7f95410 in ?? ()
(gdb) bt
#0 0xb7f95410 in ?? ()
#1 0x9117dca4 in ?? ()
#2 0x00000006 in ?? ()
#3 0x00007d8d in ?? ()
#4 0xb7c29041 in *__GI_raise (sig=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#5 0xb7c2a7d7 in *__GI_abort () at ../sysdeps/generic/abort.c:88
#6 0xb7c2279f in *__GI___assert_fail (assertion=0x0, file=0x0, line=0,
function=0xb7eb6fc8 "__pthread_mutex_lock") at assert.c:83
#7 0xb7eb10c7 in __pthread_mutex_lock (mutex=0x8252b50)
at pthread_mutex_lock.c:54
#8 0x0815a7d9 in ldap_pvt_thread_mutex_lock (mutex=0x8252b50)
at thr_posix.c:333
#9 0x08142365 in syncprov_op_search (op=0x82b3f20, rs=0x9117f230)
at syncprov.c:1993
#10 0x080ceb3c in overlay_op_walk (op=0x82b3f20, rs=0x9117f230,
which=op_search, oi=0x8252c18, on=0x8252d08) at backover.c:498
#11 0x080ced6e in over_op_func (op=0x82b3f20, rs=0x9117f230, which=op_search)
at backover.c:560
#12 0x080cedff in over_op_search (op=0x82b3f20, rs=0x9117f230)
at backover.c:582
#13 0x08068fd7 in fe_op_search (op=0x82b3f20, rs=0x9117f230) at search.c:355
#14 0x08068aad in do_search (op=0x82b3f20, rs=0x9117f230) at search.c: 217
#15 0x08065ebb in connection_operation (ctx=0x9117f2c0, arg_v=0x82b3f20)
at connection.c:1133
#16 0x08159859 in ldap_int_thread_pool_wrapper (xpool=0x8232500) at tpool.c:478
#17 0xb7eafc6b in start_thread (arg=0x9117fbb0) at pthread_create.c:261
#18 0xb7cb8d9e in clone () from /lib/libc.so.6
(gdb)