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

Re: (ITS#7968) SIGSEGV shortly after reconnection performed by syncrepl due to synchronization conflicts



current OPENLDAP_REL_ENG_2_4 (6b26910 Silence compiler warning...) with 
merge-in current mdb.master (9a72292 ITS#7961,#7987 Re-fix txn init)
- cluster of 4 node, but on single machine.
- only localback network, no any failures.
- multi-master by config, but all writes come only to first node.

Testcase will be available shortly (config + script).

Core was generated by `/opt/openldap.devel/libexec/slapd -l LOCAL5 -d 0 
-s 0 -4 -h ldap://10.4.0.1:1114'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007ff68564d07b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0  0x00007ff68564d07b in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #1 
  0x000000000047fb3c in do_syncrep2 (op=0x7ff62f7fd740, si=0x1c74190) at 
syncrepl.c:934
#2  0x00000000004838c3 in do_syncrepl (ctx=<optimised out>, 
arg=0x1c746d0) at syncrepl.c:1539
#3  0x00000000004250a8 in connection_read_thread (ctx=0x7ff62f7fdbd0, 
argv=0x35) at connection.c:1293
#4  0x00007ff685ceecf2 in ldap_int_thread_pool_wrapper (xpool=0x1c27090) 
at tpool.c:688
#5  0x00007ff6858b90a5 in start_thread () from 
/lib/x86_64-linux-gnu/libpthread.so.0
#6  0x00007ff6855e684d in clone () from /lib/x86_64-linux-gnu/libc.so.6

> 				if ( !BER_BVISNULL( &syncCookie.octet_str ) )
> 				{
> 					slap_parse_sync_cookie( &syncCookie, NULL );
> 					if ( syncCookie.ctxcsn ) {
> 						int i, sid = slap_parse_csn_sid( syncCookie.ctxcsn );
> 						check_syncprov( op, si );
> 						for ( i =0; i<si->si_cookieState->cs_num; i++ ) {
> 							/* new SID */
> 							if ( sid < si->si_cookieState->cs_sids[i] )
> 								break;
> 							if ( si->si_cookieState->cs_sids[i] == sid ) {
syncrepl.c:934 > 								if ( ber_bvcmp( syncCookie.ctxcsn, 
&si->si_cookieState->cs_vals[i] ) <= 0 ) {
> 									bdn.bv_val[bdn.bv_len] = '\0';
> 									Debug( LDAP_DEBUG_SYNC, "do_syncrep2: %s CSN too old, ignoring %s (%s)\n",
> 										si->si_ridtxt, syncCookie.ctxcsn->bv_val, bdn.bv_val );
> 									ldap_controls_free( rctrls );
> 									rc = 0;
> 									si->si_too_old = 1;
> 									goto done;
> 								}
> 								si->si_too_old = 0;
> 								break;
> 							}
> 						}