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

(ITS#5374) accesslog+hdb crash with test043-delta-syncrepl



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


/configure \
 --disable-dynamic --disable-aci --enable-crypt --enable-lmpasswd \
 --enable-spasswd --enable-rlookups --enable-slapi --enable-wrappers \
 --enable-backends --disable-sql --enable-overlays \
 CPPFLAGS='-DLDAP_THREAD_DEBUG -DLDAP_RDWR_DEBUG'

./run -b hdb test043-delta-syncrepl

server 1 crashes at accesslog.c line 918, which unlocks &li->li_op_mutex
when it is owned by another thread.
(Can also check it by setting li_unlock = (int) ldap_pvt_thread_self()
instead of 1 after lock, and assert()ing the same before unlock.)

accesslog_op_mod() has a comment
		/* FIXME: this needs to be a recursive mutex to allow
		 * overlays like refint to keep working.
		 */
		ldap_pvt_thread_mutex_lock( &li->li_op_mutex );
but this problem is not recursive use of the mutex.

(gdb) thread apply all backtrace

Thread 4 (process 10963):
#0  0x007e87a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00a64297 in pthread_join () from /lib/tls/libpthread.so.0
#2  0x081f0f62 in ldap_int_thread_join (thread=20061088, thread_return=0x0)
    at thr_posix.c:193
#3  0x081c3de4 in ldap_pvt_thread_join (thread=20061088, thread_return=0x0)
    at thr_debug.c:612
#4  0x0807bb54 in slapd_daemon () at daemon.c:2579
#5  0x08066554 in main (argc=8, argv=0xbfffefd4) at main.c:859

Thread 3 (process 10965):
#0  0x007e87a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x008cb82e in epoll_wait () from /lib/tls/libc.so.6
#2  0x0807ae29 in slapd_daemon_task (ptr=0x0) at daemon.c:2174
#3  0x00a633cc in start_thread () from /lib/tls/libpthread.so.0
#4  0x008cb1ae in clone () from /lib/tls/libc.so.6

Thread 2 (process 10967):
#0  0x007e87a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x008bc29b in __write_nocancel () from /lib/tls/libc.so.6
#2  0x0086064f in _IO_new_file_write () from /lib/tls/libc.so.6
#3  0x0086089c in _IO_new_file_xsputn () from /lib/tls/libc.so.6
#4  0x00855af1 in fputs () from /lib/tls/libc.so.6
#5  0x081f6160 in lutil_debug (debug=261, level=1,
    fmt=0x8237950 "<= key_change %d\n") at debug.c:89
#6  0x0814f485 in hdb_key_change (be=0x3061d24, db=0x838d518, txn=0x839bfe0,
    k=0xb7bba47c, id=16, op=1) at key.c:101
#7  0x0814e7ca in indexer (op=0x83799c0, txn=0x839bfe0, ad=0x830c6e8,
    atname=0x830d21c, vals=0x839aaa0, id=16, opid=1, mask=1814) at index.c:244
#8  0x0814e9a3 in index_at_values (op=0x83799c0, txn=0x839bfe0, ad=0x830c6e8,
    type=0x830d1e0, tags=0x830c6f8, vals=0x839aaa0, id=16, opid=1)
    at index.c:324
#9  0x0814eb05 in hdb_index_values (op=0x83799c0, txn=0x839bfe0,
    desc=0x830c6e8, vals=0x839aaa0, id=16, opid=1) at index.c:373
#10 0x0814eec1 in hdb_index_entry (op=0x83799c0, txn=0x839bfe0, opid=1,
    e=0x83946e8) at index.c:544
#11 0x0813ce65 in hdb_add (op=0x83799c0, rs=0x306218c) at add.c:304
#12 0x080e8903 in overlay_op_walk (op=0x83799c0, rs=0x306218c, which=op_add,
    oi=0x830c800, on=0x0) at backover.c:650
#13 0x080e8ab8 in over_op_func (op=0x83799c0, rs=0x306218c, which=op_add)
    at backover.c:702
#14 0x080e8bc4 in over_op_add (op=0x83799c0, rs=0x306218c) at backover.c:748
#15 0x080869e1 in fe_op_add (op=0x83799c0, rs=0x306218c) at add.c:342
#16 0x08086457 in do_add (op=0x83799c0, rs=0x306218c) at add.c:182
#17 0x0807e428 in connection_operation (ctx=0x3062218, arg_v=0x83799c0)
    at connection.c:1133
#18 0x081c1d40 in ldap_int_thread_pool_wrapper (xpool=0x82c86c8) at tpool.c:478
#19 0x00a633cc in start_thread () from /lib/tls/libpthread.so.0
#20 0x008cb1ae in clone () from /lib/tls/libc.so.6

Thread 1 (process 10976):
#0  0x007e87a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00829815 in raise () from /lib/tls/libc.so.6
#2  0x0082b279 in abort () from /lib/tls/libc.so.6
#3  0x081c2b9e in error (file=0x82749bd "thr_debug.c", line=784,
    msg=0x82750a0 "ldap_pvt_thread_mutex_unlock", var=0x8274d72 "rc", val=1)
    at thr_debug.c:155
#4  0x081c44ec in ldap_pvt_thread_mutex_unlock (mutex=0x830cd04)
    at thr_debug.c:784
#5  0x08183fdf in accesslog_response (op=0x8386bc8, rs=0x220318c)
    at accesslog.c:918
#6  0x08184f14 in accesslog_mod_cleanup (op=0x8386bc8, rs=0x220318c)
    at accesslog.c:1241
#7  0x0808fcca in send_ldap_response (op=0x8386bc8, rs=0x220318c)
    at result.c:458
#8  0x080903f1 in slap_send_ldap_result (op=0x8386bc8, rs=0x220318c)
    at result.c:574
#9  0x0813d474 in hdb_add (op=0x8386bc8, rs=0x220318c) at add.c:409
#10 0x080e8903 in overlay_op_walk (op=0x8386bc8, rs=0x220318c, which=op_add,
    oi=0x830c800, on=0x0) at backover.c:650
#11 0x080e8ab8 in over_op_func (op=0x8386bc8, rs=0x220318c, which=op_add)
    at backover.c:702
#12 0x080e8bc4 in over_op_add (op=0x8386bc8, rs=0x220318c) at backover.c:748
#13 0x080869e1 in fe_op_add (op=0x8386bc8, rs=0x220318c) at add.c:342
#14 0x08086457 in do_add (op=0x8386bc8, rs=0x220318c) at add.c:182
#15 0x0807e428 in connection_operation (ctx=0x2203218, arg_v=0x8386bc8)
    at connection.c:1133
#16 0x081c1d40 in ldap_int_thread_pool_wrapper (xpool=0x82c86c8) at tpool.c:478
#17 0x00a633cc in start_thread () from /lib/tls/libpthread.so.0
#18 0x008cb1ae in clone () from /lib/tls/libc.so.6