From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15990 invoked by alias); 15 Jun 2009 18:29:23 -0000 Received: (qmail 15983 invoked by alias); 15 Jun 2009 18:29:23 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: RHEL4 - rgmanager: Fix stop/start race To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/RHEL4 X-Git-Reftype: branch X-Git-Oldrev: d1165e1139c3264b037eb494b137132d95f09cb0 X-Git-Newrev: 69249ff719a7f3ee2a6addbdcd2d31fc2a0c1ee1 From: Lon Hohberger Message-Id: <20090615182856.52B461201B7@lists.fedorahosted.org> Date: Mon, 15 Jun 2009 18:29:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q2/txt/msg00526.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=69249ff719a7f3ee2a6addbdcd2d31fc2a0c1ee1 Commit: 69249ff719a7f3ee2a6addbdcd2d31fc2a0c1ee1 Parent: d1165e1139c3264b037eb494b137132d95f09cb0 Author: Lon Hohberger AuthorDate: Mon Jun 15 14:18:36 2009 -0400 Committer: Lon Hohberger CommitterDate: Mon Jun 15 14:27:41 2009 -0400 rgmanager: Fix stop/start race If a thread exits right as rgmanager gets a request to start a new thread, there's a chance that the the starting thread will incorrectly have a reference to the old thread and not retry, causing an infinite loop. Resolves Bugzilla # 502872 Signed-off-by: Lon Hohberger --- rgmanager/src/daemons/rg_thread.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/rgmanager/src/daemons/rg_thread.c b/rgmanager/src/daemons/rg_thread.c index e96982b..c1d6140 100644 --- a/rgmanager/src/daemons/rg_thread.c +++ b/rgmanager/src/daemons/rg_thread.c @@ -500,6 +500,7 @@ spawn_if_needed(const char *resgroupname) resthread_t *resgroup = NULL; retry: + resgroup = NULL; pthread_mutex_lock(&reslist_mutex); while (resgroup == NULL) { resgroup = find_resthread_byname(resgroupname);