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

Re: (ITS#3434) test030 fails in HEAD

The hang appears to be related to a deadlock in send_ldap_ber() when 
called in the abandon stack sequence of the databases not implied in the 
operation.  I clearly see at some point that while conn->c_mutex is in 
the state below, it gets unlocked, but its value doesn't change; as soon 
as it's locked again, it gets into a deadlock state.

I've temporarily fixed it by setting bi_op_abandon = 0 in back-relay.

Breakpoint 5, send_ldap_ber (conn=0xb6bfcdc8, ber=0xb6bf9030) at 
160             ber_get_option( ber, LBER_OPT_BER_BYTES_TO_WRITE, &bytes );
(gdb) p conn->c_mutex
$30 = {__m_reserved = 2, __m_count = 0, __m_owner = 0x5cb4, __m_kind = 0,
  __m_lock = {__status = 1, __spinlock = 0}}
(gdb) bt
#0  send_ldap_ber (conn=0xb6bfcdc8, ber=0xb6bf9030) at result.c:160
#1  0x0808ffe0 in send_ldap_response (op=0xb6bf9450, rs=0xb6bf93b0)
    at result.c:429
#2  0x0809081b in slap_send_ldap_result (op=0xb6bf9450, rs=0xb6bf93b0)
    at result.c:607
#3  0x0810187b in relay_back_op_abandon (op=0xb6bf9450, rs=0xb6bf93b0)
    at op.c:393
#4  0x080d31b8 in over_op_func (op=0xb6bf9450, rs=0xb6bf93b0, 
    at backover.c:291
#5  0x080d32f0 in over_op_abandon (op=0xb6bf9450, rs=0xb6bf93b0)
    at backover.c:353
#6  0x0809e77c in fe_op_abandon (op=0xb6bf9450, rs=0xb6bf93b0) at 
#7  0x080801d2 in connection_abandon (c=0xb6bfcdc8) at connection.c:726
#8  0x08080375 in connection_closing (c=0xb6bfcdc8) at connection.c:760
#9  0x080819d9 in connection_read (s=10) at connection.c:1332
#10 0x0807e711 in slapd_daemon_task (ptr=0x0) at daemon.c:1871
#11 0xb73acdac in start_thread () from /lib/tls/libpthread.so.0
#12 0xb72afa8a in clone () from /lib/tls/libc.so.6

    SysNet - via Dossi,8 27100 Pavia Tel: +390382573859 Fax: +390382476497