There is an assertion in totemsrp.c to ensure my_proc_list[0] doesn't
equal my_proc_list[1].  At one time there was a bug where this would
happen and the assertion was added to ensure the bug didn't reappear.
Unfortunately the assertion assumes my_proc_list_entries is 2.  In the
case where my_proc_list_entries is 1, it is possible under extremely
rare circumstances (membership goes from > 1 to 1, and my_proc_list[1]
contains the same entry as my_proc_list[0] an incorrect assertion will
occur.

The solution is simply to remove these invalid assertions.

Index: totemsrp.c
===================================================================
--- totemsrp.c	(revision 2639)
+++ totemsrp.c	(working copy)
@@ -1804,7 +1804,6 @@
 	memb_set_merge (
 		&instance->my_id, 1,
 		instance->my_proc_list, &instance->my_proc_list_entries);
-	assert (srp_addr_equal (&instance->my_proc_list[0], &instance->my_proc_list[1]) == 0);
 
 	memb_join_message_send (instance);
 
@@ -2910,7 +2909,6 @@
 	memb_join->header.nodeid = instance->my_id.addr[0].nodeid;
 	assert (memb_join->header.nodeid);
 
-	assert (srp_addr_equal (&instance->my_proc_list[0], &instance->my_proc_list[1]) == 0);
 	memb_join->ring_seq = instance->my_ring_id.seq;
 	memb_join->proc_list_entries = instance->my_proc_list_entries;
 	memb_join->failed_list_entries = instance->my_failed_list_entries;
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to