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

(ITS#4500) Deadlock in test044-dynlist with back-ldif



Full_Name: Hallvard B Furuseth
Version: HEAD
OS: Linux
URL: 
Submission from: (NULL) (129.240.186.42)
Submitted by: hallvard


Configure with CPPFLAGS="-DLDAP_THREAD_DEBUG"
cd tests; ./run -b ldif test044-dynlist
ldap_pvt_thread_mutex_lock() fails with Resource deadlock avoided.

(LDAP_THREAD_DEBUG turns on pthread error checking in mutexes,
checks error returns, and by default aborts on error.)

(gdb) thread apply all backtrace

Thread 4 (process 19137):
#0  0x0014f7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x003c80fd in pthread_join () from /lib/tls/libpthread.so.0
#2  0x08177721 in ldap_int_thread_join (thread=4294967292,
    thread_return=0xfffffffc) at thr_posix.c:193
#3  0x08152a71 in ldap_pvt_thread_join (thread=3082148784, thread_return=0x0)
    at thr_debug.c:788
#4  0x080774f2 in slapd_daemon () at daemon.c:2233
#5  0x08065883 in main (argc=8, argv=0xbfffef84) at main.c:907

Thread 3 (process 19139):
#0  0x0014f7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x0023003e in epoll_wait () from /lib/tls/libc.so.6
#2  0x08076bd9 in slapd_daemon_task (ptr=0x0) at daemon.c:1842
#3  0x003c7371 in start_thread () from /lib/tls/libpthread.so.0
#4  0x0022f9be in clone () from /lib/tls/libc.so.6

Thread 2 (process 19141):
#0  0x0014f7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x003c9b16 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/tls/libpthread.so.0
#2  0x081777b6 in ldap_int_thread_cond_wait (cond=0xfffffffc, mutex=0xfffffffc)
    at thr_posix.c:299
#3  0x081530a2 in ldap_pvt_thread_cond_wait (cond=0x8245250, mutex=0x8245224)
    at thr_debug.c:899
#4  0x08150a7a in ldap_int_thread_pool_wrapper (xpool=0x8245220) at tpool.c:601
#5  0x003c7371 in start_thread () from /lib/tls/libpthread.so.0
#6  0x0022f9be in clone () from /lib/tls/libc.so.6

Thread 1 (process 19145):
#0  0x0014f7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x0018f7f5 in raise () from /lib/tls/libc.so.6
#2  0x00191199 in abort () from /lib/tls/libc.so.6
#3  0x081533d7 in ldap_pvt_thread_mutex_lock (mutex=0x8261a68)
    at thr_debug.c:947
#4  0x080f8287 in ldif_back_search (op=0xb72586cc, rs=0xb7258690) at ldif.c:763
#5  0x080d3405 in overlay_op_walk (op=0xb72586cc, rs=0xb7258690,
    which=op_search, oi=0x0, on=0x8261d50) at backover.c:497
#6  0x080d3563 in over_op_func (op=0xb72586cc, rs=0x0, which=op_bind)
    at backover.c:549
#7  0x080d35e9 in over_op_search (op=0x0, rs=0x0) at backover.c:571
#8  0xb7b5fd39 in dynlist_send_entry (op=0x832fd10, rs=0xb725a210,
    dli=0x8261ac8) at dynlist.c:456
#9  0xb7b603a2 in dynlist_response (op=0x832fd10, rs=0xb725a210)
    at dynlist.c:664
#10 0x080d2edb in over_back_response (op=0x832fd10, rs=0xb725a210)
    at backover.c:234
#11 0x08087cb0 in slap_response_play (op=0x832fd10, rs=0xb725a210)
    at result.c:318
#12 0x08088e3c in slap_send_search_entry (op=0x832fd10, rs=0xb725a210)
    at result.c:816
#13 0x080f75c8 in r_enum_tree (ck=0xb7258f68, path=0xb7258ed8, pdn=0x0,
    pndn=0x0) at ldif.c:354
#14 0x080f7943 in r_enum_tree (ck=0xb7258f68, path=0xb7258f34, pdn=0x0,
    pndn=0x0) at ldif.c:457
#15 0x080f7a1e in enum_tree (ck=0xb7258f68) at ldif.c:484
#16 0x080f8292 in ldif_back_search (op=0x832fd10, rs=0xb725a210) at ldif.c:764
#17 0x080d3405 in overlay_op_walk (op=0x832fd10, rs=0xb725a210,
    which=op_search, oi=0x0, on=0x8261d50) at backover.c:497
#18 0x080d3563 in over_op_func (op=0x832fd10, rs=0x0, which=op_bind)
    at backover.c:549
#19 0x080d35e9 in over_op_search (op=0x0, rs=0x0) at backover.c:571
#20 0x0807c7e4 in fe_op_search (op=0x832fd10, rs=0xb725a210) at search.c:355
#21 0x0807c3f5 in do_search (op=0x832fd10, rs=0xb725a210) at search.c:217
#22 0x08079c5c in connection_operation (ctx=0xb725a2bc, arg_v=0x832fd10)
    at connection.c:1354
#23 0x0807a033 in connection_read_thread (ctx=0xb725a2bc, argv=0x8)
    at connection.c:1481
#24 0x08150ab4 in ldap_int_thread_pool_wrapper (xpool=0x8245220) at tpool.c:613
#25 0x003c7371 in start_thread () from /lib/tls/libpthread.so.0
#26 0x0022f9be in clone () from /lib/tls/libc.so.6

>>>>> Starting test044-dynlist ...
...
Testing list search of all attrs...
./scripts/test044-dynlist: line 94: 19137 Aborted                 (core dumped)
$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING >$LOG1 2>&1
ldapsearch failed (255)!

testrun/slapd.1.log from last operation:

conn=2 op=1 SRCH attr=*
=> str2entry: "dn: ou=Dynamic Lists
objectClass: organizationalUnit
ou: Dynamic Lists
structuralObjectClass: organizationalUnit
entryUUID: b70639b2-6819-102a-8d40-076b3ad9deab
creatorsName: cn=Manager,dc=example,dc=com
createTimestamp: 20060424200735Z
entryCSN: 20060424200735Z#000000#00#000000
modifiersName: cn=Manager,dc=example,dc=com
modifyTimestamp: 20060424200735Z
"
>>> dnPrettyNormal: <ou=Dynamic Lists>
=> ldap_bv2dn(ou=Dynamic Lists,0)
<= ldap_bv2dn(ou=Dynamic Lists)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=Dynamic Lists)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=dynamic lists)=0 
<<< dnPrettyNormal: <ou=Dynamic Lists>, <ou=dynamic lists>
>>> dnNormalize: <cn=Manager,dc=example,dc=com>
=> ldap_bv2dn(cn=Manager,dc=example,dc=com,0)
<= ldap_bv2dn(cn=Manager,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=manager,dc=example,dc=com)=0 
<<< dnNormalize: <cn=manager,dc=example,dc=com>
>>> dnNormalize: <cn=Manager,dc=example,dc=com>
=> ldap_bv2dn(cn=Manager,dc=example,dc=com,0)
<= ldap_bv2dn(cn=Manager,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=manager,dc=example,dc=com)=0 
<<< dnNormalize: <cn=manager,dc=example,dc=com>
<= str2entry(ou=Dynamic Lists) -> 0x83306a0
==> limits_get: conn=2 op=1 dn="[anonymous]"
=> str2entry: "dn: ou=Dynamic Lists
objectClass: organizationalUnit
ou: Dynamic Lists
structuralObjectClass: organizationalUnit
entryUUID: b70639b2-6819-102a-8d40-076b3ad9deab
creatorsName: cn=Manager,dc=example,dc=com
createTimestamp: 20060424200735Z
entryCSN: 20060424200735Z#000000#00#000000
modifiersName: cn=Manager,dc=example,dc=com
modifyTimestamp: 20060424200735Z
"
>>> dnPrettyNormal: <ou=Dynamic Lists>
=> ldap_bv2dn(ou=Dynamic Lists,0)
<= ldap_bv2dn(ou=Dynamic Lists)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=Dynamic Lists)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=dynamic lists)=0 
<<< dnPrettyNormal: <ou=Dynamic Lists>, <ou=dynamic lists>
>>> dnNormalize: <cn=Manager,dc=example,dc=com>
=> ldap_bv2dn(cn=Manager,dc=example,dc=com,0)
<= ldap_bv2dn(cn=Manager,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=manager,dc=example,dc=com)=0 
<<< dnNormalize: <cn=manager,dc=example,dc=com>
>>> dnNormalize: <cn=Manager,dc=example,dc=com>
=> ldap_bv2dn(cn=Manager,dc=example,dc=com,0)
<= ldap_bv2dn(cn=Manager,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=manager,dc=example,dc=com)=0 
<<< dnNormalize: <cn=manager,dc=example,dc=com>
<= str2entry(ou=Dynamic Lists) -> 0x83306a0
=> str2entry: "dn: cn=Dynamic List
objectClass: groupOfURLs
cn: Dynamic List
memberURL: ldap:///ou=People,dc=example,dc=com?cn,mail?sub?(objectClass=person
 )
structuralObjectClass: groupOfURLs
entryUUID: b7065ba4-6819-102a-8d41-076b3ad9deab
creatorsName: cn=Manager,dc=example,dc=com
createTimestamp: 20060424200735Z
entryCSN: 20060424200735Z#000001#00#000000
modifiersName: cn=Manager,dc=example,dc=com
modifyTimestamp: 20060424200735Z
"
>>> dnPrettyNormal: <cn=Dynamic List>
=> ldap_bv2dn(cn=Dynamic List,0)
<= ldap_bv2dn(cn=Dynamic List)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=Dynamic List)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=dynamic list)=0 
<<< dnPrettyNormal: <cn=Dynamic List>, <cn=dynamic list>
>>> dnNormalize: <cn=Manager,dc=example,dc=com>
=> ldap_bv2dn(cn=Manager,dc=example,dc=com,0)
<= ldap_bv2dn(cn=Manager,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=manager,dc=example,dc=com)=0 
<<< dnNormalize: <cn=manager,dc=example,dc=com>
>>> dnNormalize: <cn=Manager,dc=example,dc=com>
=> ldap_bv2dn(cn=Manager,dc=example,dc=com,0)
<= ldap_bv2dn(cn=Manager,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=manager,dc=example,dc=com)=0 
<<< dnNormalize: <cn=manager,dc=example,dc=com>
<= str2entry(cn=Dynamic List) -> 0x8330ad8
ldap_url_parse_ext(ldap:///ou=People,dc=example,dc=com?cn,mail?sub?(objectClass=person))
>>> dnPrettyNormal: <ou=People,dc=example,dc=com>
=> ldap_bv2dn(ou=People,dc=example,dc=com,0)
<= ldap_bv2dn(ou=People,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=People,dc=example,dc=com)=0 
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=people,dc=example,dc=com)=0 
<<< dnPrettyNormal: <ou=People,dc=example,dc=com>,
<ou=people,dc=example,dc=com>
put_filter: "(&(!(objectClass=groupOfURLs))(objectClass=person))"
put_filter: AND
put_filter_list "(!(objectClass=groupOfURLs))(objectClass=person)"
put_filter: "(!(objectClass=groupOfURLs))"
put_filter: NOT
put_filter_list "(objectClass=groupOfURLs)"
put_filter: "(objectClass=groupOfURLs)"
put_filter: simple
put_simple_filter: "objectClass=groupOfURLs"
put_filter: "(objectClass=person)"
put_filter: simple
put_simple_filter: "objectClass=person"
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({mm}) ber:
thr_debug.c:947: ldap_pvt_thread_mutex_lock error: rc is 35