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

(ITS#3709) slapd deadlock on DEL



Full_Name: Aaron Richton
Version: 2.2.25+patches
OS: Solaris 9
URL: 
Submission from: (NULL) (128.6.31.135)


OL 2.2.25 with patches for ITS#3685 and ITS#3688 (essentially 2.2.26). An
ldapdelete process with a small amount of changes was running for excessive time
and was caught by our systems monitoring software. The stack trace showed a
likely deadlock condition in slapd. ldapdelete was stuck in poll(), waiting for
return from slapd. I sent a SIGINT resulting in

[local4.debug] slapd shutdown: waiting for 3 threads to terminate

slapd was continuously yield()ing. I waited a few minutes and used gcore before
sending SIGKILL. The backtrace looks like something may be deadlocked:

Thread 5 (LWP 2):
#0  0xfede59b4 in lwp_yield () from /usr/lib/libthread.so.1
#1  0x0016c954 in ldap_pvt_thread_yield () at thr_posix.c:184
#2  0x0016b20c in ldap_pvt_thread_pool_destroy (tpool=0x230934, run_pending=1)
    at tpool.c:376
#3  0x00058284 in slapd_daemon_task (ptr=0x0) at daemon.c:2007

Thread 4 (LWP 4):
#0  0xfee9f418 in ___lwp_cond_wait () from /usr/lib/libc.so.1
#1  0xfee96428 in _lwp_cond_wait () from /usr/lib/libc.so.1
#2  0xff2943a4 in __db_pthread_mutex_lock () from /usr/local/lib/libdb-4.2.so
#3  0xff317d6c in __lock_get_internal () from /usr/local/lib/libdb-4.2.so
#4  0xff316780 in __lock_vec () from /usr/local/lib/libdb-4.2.so
#5  0xff2fa2c0 in __db_lget () from /usr/local/lib/libdb-4.2.so
#6  0xff2a69cc in __bam_search () from /usr/local/lib/libdb-4.2.so
#7  0xff29bb94 in __bam_c_search () from /usr/local/lib/libdb-4.2.so
#8  0xff298214 in __bam_c_get () from /usr/local/lib/libdb-4.2.so
#9  0xff2edad8 in __db_c_get () from /usr/local/lib/libdb-4.2.so
#10 0xff2f7800 in __db_c_get_pp () from /usr/local/lib/libdb-4.2.so
#11 0x00130770 in hdb_dn2id_parent (op=0xd4b678, txn=0x0, ei=0xd9f3f5f0,
    idp=0xd9f3f5a4) at dn2id.c:827
#12 0x00127c8c in hdb_cache_find_parent (op=0xd4b678, txn=0x0, id=1,
    res=0xd9f3f968) at cache.c:383
#13 0x001287a0 in hdb_cache_find_id (op=0xd4b678, tid=0x0, id=1,
    eip=0xd9f3f968, islocked=0, locker=54, lock=0xd9f3f7fc) at cache.c:659
#14 0x000f7ca4 in hdb_do_search () at tools.c:283
#15 0x000f5714 in hdb_search () at tools.c:283
#16 0x0005f668 in do_search (op=0xd4b678, rs=0xd9fffd58) at search.c:412
#17 0x0005bb34 in _end ()
#18 0x0016b650 in ldap_int_thread_pool_wrapper (xpool=0x241638) at tpool.c:467

Thread 3 (LWP 5):
#0  0xfee9f418 in ___lwp_cond_wait () from /usr/lib/libc.so.1
#1  0xfee96428 in _lwp_cond_wait () from /usr/lib/libc.so.1
#2  0xff2943a4 in __db_pthread_mutex_lock () from /usr/local/lib/libdb-4.2.so
#3  0xff317d6c in __lock_get_internal () from /usr/local/lib/libdb-4.2.so
#4  0xff316780 in __lock_vec () from /usr/local/lib/libdb-4.2.so
#5  0xff2fa2c0 in __db_lget () from /usr/local/lib/libdb-4.2.so
#6  0xff2a69cc in __bam_search () from /usr/local/lib/libdb-4.2.so
#7  0xff29bb94 in __bam_c_search () from /usr/local/lib/libdb-4.2.so
#8  0xff298214 in __bam_c_get () from /usr/local/lib/libdb-4.2.so
#9  0xff2edad8 in __db_c_get () from /usr/local/lib/libdb-4.2.so
#10 0xff2f7800 in __db_c_get_pp () from /usr/local/lib/libdb-4.2.so
#11 0x00130770 in hdb_dn2id_parent (op=0x284b3c0, txn=0x0, ei=0xd973f5f0,
    idp=0xd973f5a4) at dn2id.c:827
#12 0x00127c8c in hdb_cache_find_parent (op=0x284b3c0, txn=0x0, id=1,
    res=0xd973f968) at cache.c:383
#13 0x001287a0 in hdb_cache_find_id (op=0x284b3c0, tid=0x0, id=1,
    eip=0xd973f968, islocked=0, locker=55, lock=0xd973f7fc) at cache.c:659
#14 0x000f7ca4 in hdb_do_search () at tools.c:283
#15 0x000f5714 in hdb_search () at tools.c:283
#16 0x0005f668 in do_search (op=0x284b3c0, rs=0xd97ffd58) at search.c:412
#17 0x0005bb34 in _end ()
#18 0x0016b650 in ldap_int_thread_pool_wrapper (xpool=0x241638) at tpool.c:467

Thread 2 (LWP 15):
#0  0xfee9f418 in ___lwp_cond_wait () from /usr/lib/libc.so.1
#1  0xfee96428 in _lwp_cond_wait () from /usr/lib/libc.so.1
#2  0xff2943a4 in __db_pthread_mutex_lock () from /usr/local/lib/libdb-4.2.so
#3  0xff317d6c in __lock_get_internal () from /usr/local/lib/libdb-4.2.so
#4  0xff316780 in __lock_vec () from /usr/local/lib/libdb-4.2.so
#5  0xff2fa2c0 in __db_lget () from /usr/local/lib/libdb-4.2.so
#6  0xff2a69cc in __bam_search () from /usr/local/lib/libdb-4.2.so
#7  0xff29bb94 in __bam_c_search () from /usr/local/lib/libdb-4.2.so
#8  0xff298214 in __bam_c_get () from /usr/local/lib/libdb-4.2.so
#9  0xff2edad8 in __db_c_get () from /usr/local/lib/libdb-4.2.so
#10 0xff2e6270 in __db_del () from /usr/local/lib/libdb-4.2.so
#11 0xff2f50a0 in __db_del_pp () from /usr/local/lib/libdb-4.2.so
#12 0x00134f90 in hdb_id2entry_delete (be=0x28b400, tid=0x3340c88, e=0xa824e40)
   at id2entry.c:148
#13 0x0012e7a0 in hdb_delete (op=0x29be028, rs=0xd47ffd58) at delete.c:398
#14 0x0007db44 in do_delete (op=0x29be028, rs=0xd47ffd58) at delete.c:230
#15 0x0005ba14 in _end ()
#16 0x0016b650 in ldap_int_thread_pool_wrapper (xpool=0x241638) at tpool.c:467

Thread 1 (LWP 1):
#0  0xfee9f330 in _lwp_wait () from /usr/lib/libc.so.1
#1  0xfeddd6bc in lwp_wait () from /usr/lib/libthread.so.1
#2  0xfedd90f0 in _thrp_join () from /usr/lib/libthread.so.1
#3  0x0016c8d8 in ldap_pvt_thread_join (thread=2, thread_return=0x0)
    at thr_posix.c:151
#4  0x00058394 in slapd_daemon () at daemon.c:2041
#5  0x00046ae4 in main (argc=4, argv=0xffbffd94) at main.c:713

Logs and core files available upon request.