diff options
author | Max Romanov <max.romanov@nginx.com> | 2021-11-24 13:11:50 +0300 |
---|---|---|
committer | Max Romanov <max.romanov@nginx.com> | 2021-11-24 13:11:50 +0300 |
commit | 2bc95990571f82ddfc685fadff4847abff4362e3 (patch) | |
tree | a58e190c8fa759828c3ace3bfd5dff52aecd13be /src/nxt_main_process.c | |
parent | 9e2e69dd58f01005e088b55466e67c0eafc2a414 (diff) | |
download | unit-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.
Diffstat (limited to '')
-rw-r--r-- | src/nxt_main_process.c | 4 |
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); |