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]