diff options
| author | Peter Wu <lekensteyn@gmail.com> | 2014-01-09 11:08:19 +0100 |
|---|---|---|
| committer | Peter Wu <lekensteyn@gmail.com> | 2014-01-09 11:08:19 +0100 |
| commit | 2041deb6da8825095e007cd5638abd6ffc4f3a4e (patch) | |
| tree | 8100b87ea48f55f147da3592d85e7415cba875dc | |
| parent | 4b2151ef965bfcf90b9ebdcf759a5f788368116f (diff) | |
| download | fcgiwrap-2041deb6da8825095e007cd5638abd6ffc4f3a4e.tar.xz fcgiwrap-2041deb6da8825095e007cd5638abd6ffc4f3a4e.zip | |
prefork: Fix 100% CPU usage in parent process
When a child process is terminated, the parent calls waitpid() to check
for dead children. This returns -1 on error (e.g. there are no other
children or a signal interrupted waitpid()), the pid (> 0) for dead
children OR 0 if there are some children which are still alive.
Fixes gnosek/fcgiwrap#18.
| -rw-r--r-- | fcgiwrap.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -623,7 +623,7 @@ static void sigchld_handler(int dummy) { int status; - while ((dummy = waitpid(-1, &status, WNOHANG)) != -1) { + while ((dummy = waitpid(-1, &status, WNOHANG)) > 0) { /* sanity check */ if (nrunning > 0) nrunning--; |
