ghola@rebelbase.com wrote:
Full_Name: Duncan Idaho Version: 2.4.25 OS: RHEL 5.5 URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (204.10.36.147)
In my configuration slapd segfaults within a few hours repeatably when a NULL value is somehow passed as a filter to test_filter in the syncprov overlay.
I'm running "threads 64" as I have 62 consumers connecting and this was required to prevent unrelated searches from timing out when all the consumers connect at once.
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x59832940 (LWP 2042)] test_filter (op=0x59830770, e=0x2aab11861068, f=0x0) at filterentry.c:69 69 if ( f->f_choice& SLAPD_FILTER_UNDEFINED ) { (gdb) bt #0 test_filter (op=0x59830770, e=0x2aab11861068, f=0x0) at filterentry.c:69 #1 0x00000000004db315 in syncprov_matchops (op=0x59831130, opc=0xbc91750, saveit=1) at syncprov.c:1314 #2 0x00000000004db6b5 in syncprov_op_mod (op=0x59831130, rs=<value optimized out>) at syncprov.c:2124 #3 0x000000000047e62a in overlay_op_walk (op=0x59831130, rs=0x59830f40, which=op_modify, oi=0x8d7b50, on=0x8dc540) at backover.c:659 #4 0x000000000047ec07 in over_op_func (op=0x59831130, rs=0x59830f40, which=op_modify) at backover.c:721 #5 0x000000000047404d in syncrepl_updateCookie (si=0x8d74e0, op=0x59831130, syncCookie=0x59831aa0) at syncrepl.c:3292 #6 0x0000000000479d0d in do_syncrep2 (ctx=<value optimized out>, arg=<value optimized out>) at syncrepl.c:959 #7 do_syncrepl (ctx=<value optimized out>, arg=<value optimized out>) at syncrepl.c:1455 #8 0x000000000041f7aa in connection_read_thread (ctx=0x59831d70, argv=<value optimized out>) at connection.c:1251 #9 0x00000000004ec5ec in ldap_int_thread_pool_wrapper (xpool=0x84de50) at tpool.c:685 #10 0x000000301b20673d in start_thread (arg=<value optimized out>) at pthread_create.c:301 #11 0x000000301aad44bd in clone () from /lib64/libc.so.6
Let me know if I can provide more info.
A patch to avoid this particular crash is now in git master. However, it's still not clear to me why it occurred. Can you get this info from gdb: frame 1 print *ss