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

(ITS#6810) slapd crashes writing to bdb backend



Full_Name: Bruno HALEBLIAN
Version: 2.4.23
OS: RHEL 5.5/64 bits
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (92.243.12.111)


Hello,
I'm stuck with "random" slapd crashes, my slapd has been tested successfully in
read mode but since I run updates, I get several crashes a day, with no BDB
corruption (recover and restart OK) but I can't let this go to production
stage.

Here's the first core stack I caught, I'll send more if I meet different ones.

Thanks for your help.
 

kernel: slapd[13284]: segfault at 0000000000000008 rip 000000000052a377 rsp
0000000043fa5160 error 4

Program terminated with signal 11, Segmentation fault.
#0  0x000000000052a377 in syncprov_matchops (op=0x182cdb00, opc=0x182d04c8,
saveit=1)
    at syncprov.c:1309
1309                                    op2.ors_filter =
ss->s_op->ors_filter->f_and->f_next;
(gdb) where
#0  0x000000000052a377 in syncprov_matchops (op=0x182cdb00, opc=0x182d04c8,
saveit=1)
    at syncprov.c:1309
#1  0x000000000052a5e1 in syncprov_op_mod (op=0x182cdb00, rs=<value optimized
out>)
    at syncprov.c:2075
#2  0x000000000049757a in overlay_op_walk (op=0x182cdb00, rs=0x43fa6c70,
which=op_modify,
    oi=0x17b6e2f0, on=0x17b6e4d0) at backover.c:659
#3  0x0000000000497b47 in over_op_func (op=0x182cdb00, rs=0x43fa6c70,
which=op_modify)
    at backover.c:721
#4  0x000000000044c537 in fe_op_modify (op=0x182cdb00, rs=0x43fa6c70) at
modify.c:301
#5  0x000000000044cc92 in do_modify (op=0x182cdb00, rs=0x43fa6c70) at
modify.c:175
#6  0x0000000000435655 in connection_operation (ctx=0x43fa6dc0, arg_v=<value
optimized out>)
    at connection.c:1109
#7  0x0000000000435c2f in connection_read_thread (ctx=0x43fa6dc0, argv=<value
optimized out>)
    at connection.c:1245
#8  0x000000000054345c in ldap_int_thread_pool_wrapper (xpool=0x17af0350) at
tpool.c:685
#9  0x000000339360673d in start_thread () from /lib64/libpthread.so.0
#10 0x0000003392ed3d1d in removexattr () from /lib64/libc.so.6
#11 0x0000000000000000 in ?? ()
(gdb) list *0x000000000052a377
0x52a377 is in syncprov_matchops (syncprov.c:1309).
1304                            ldap_pvt_thread_mutex_lock( &ss->s_mutex );
1305                            if (ss->s_flags & PS_FIX_FILTER) {
1306                                    /* Skip the AND/GE clause that we stuck
on in front. We
1307                                       would lose deletes/mods that happen
during the refresh
1308                                       phase otherwise (ITS#6555) */
1309                                    op2.ors_filter =
ss->s_op->ors_filter->f_and->f_next;
1310                            }
1311                            ldap_pvt_thread_mutex_unlock( &ss->s_mutex );
1312                            rc = test_filter( &op2, e, op2.ors_filter );
1313                    }