pgpool2.git / summary / log / commit / refs
commit d190e46d1def22cd4cc6b274f94edb4f57350905
Author: Tatsuo Ishii <ishii@postgresql.org>
Date: Fri Nov 23 03:58:38 2012 +0000
Fix reaper() not to exit wait3() loop when catches pcp or worker child
exit event. Otherwise reaper() mistakenly ignore some process exit
event and make a risk of creating zombie process and forgetting to
create new process. Commit a99744560f54f6723799408cd3623a73b2b335e6
should be enough for pcp child case, but not enough for worker process
case. Problem reported and fix suggested by Goto in
[pgpool-general-jp: 1123].
main.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/main.c b/main.c
index c378c766d..5729f62bb 100644
--- a/main.c
+++ b/main.c
@@ -2294,7 +2294,6 @@ static void reaper(void)
pcp_pid = pcp_fork_a_child(pcp_unix_fd, pcp_inet_fd, pcp_conf_file);
pool_log("fork a new PCP child pid %d", pcp_pid);
- break;
}
/* exiting process was worker process */
@@ -2309,8 +2308,8 @@ static void reaper(void)
worker_pid = worker_fork_a_child();
pool_log("fork a new worker child pid %d", worker_pid);
- break;
- } else
+ }
+ else
{
if (WIFSIGNALED(status))
pool_debug("child %d exits with status %d by signal %d", pid, status, WTERMSIG(status));
[parent: 5b09b11fa939]