Просмотр исходного кода

This patch fixes a crash in cpg.c where a group is left befopre
cpg_finalise is called. It can cause the process_info structure to be
removed twice from the group list.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1884 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 17 лет назад
Родитель
Сommit
f806dd09fd
1 измененных файлов с 2 добавлено и 1 удалено
  1. 2 1
      services/cpg.c

+ 2 - 1
services/cpg.c

@@ -493,7 +493,8 @@ static int cpg_lib_exit_fn (void *conn)
 		notify_info.reason = CONFCHG_CPG_REASON_PROCDOWN;
 		notify_info.reason = CONFCHG_CPG_REASON_PROCDOWN;
 		cpg_node_joinleave_send(gi, pi, MESSAGE_REQ_EXEC_CPG_PROCLEAVE, CONFCHG_CPG_REASON_PROCDOWN);
 		cpg_node_joinleave_send(gi, pi, MESSAGE_REQ_EXEC_CPG_PROCLEAVE, CONFCHG_CPG_REASON_PROCDOWN);
 	}
 	}
-	list_del(&pi->list);
+	if (pi->pid)
+		list_del(&pi->list);
 	api->ipc_refcnt_dec (conn);
 	api->ipc_refcnt_dec (conn);
 	return (0);
 	return (0);
 }
 }