summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2021-11-24 13:11:50 +0300
committerMax Romanov <max.romanov@nginx.com>2021-11-24 13:11:50 +0300
commit2bc95990571f82ddfc685fadff4847abff4362e3 (patch)
treea58e190c8fa759828c3ace3bfd5dff52aecd13be
parent9e2e69dd58f01005e088b55466e67c0eafc2a414 (diff)
downloadunit-2bc95990571f82ddfc685fadff4847abff4362e3.tar.gz
unit-2bc95990571f82ddfc685fadff4847abff4362e3.tar.bz2
Fixing zombie process appearance and hang up on shutdown.
After the c8790d2a89bb commit, the SIGCHLD handler may return before processing all awaiting PIDs. To avoid zombie processes and ensure successful main process termination, waitpid() must be called until an error is returned. This closes #600 issue on GitHub.
-rw-r--r--src/nxt_main_process.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/nxt_main_process.c b/src/nxt_main_process.c
index 3914c041..9883f04c 100644
--- a/src/nxt_main_process.c
+++ b/src/nxt_main_process.c
@@ -972,9 +972,11 @@ nxt_main_process_sigchld_handler(nxt_task_t *task, void *obj, void *data)
if (rt->nprocesses <= 1) {
nxt_runtime_quit(task, 0);
+
+ return;
}
- return;
+ continue;
}
nxt_port_remove_notify_others(task, process);