diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2012-07-23 16:37:24 +0000 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2012-07-23 16:37:24 +0000 |
commit | 9d5f5a0c76dc0aba74777b8afad95e2d6ed12354 (patch) | |
tree | c9c1828add30dd321f97d45e61a9e9f867ab6879 /src | |
parent | 54ab41f27bc7e6cb09694c6e6f1fbc9a41034d1a (diff) | |
download | nginx-9d5f5a0c76dc0aba74777b8afad95e2d6ed12354.tar.gz nginx-9d5f5a0c76dc0aba74777b8afad95e2d6ed12354.zip |
Win32: fixed cpu hog after process startup failure.
If ngx_spawn_process() failed while starting a process, the process
handle was closed but left non-NULL in the ngx_processes[] array.
The handle later was used in WaitForMultipleObjects() (if there
were multiple worker processes configured and at least one worker
process was started successfully), resulting in infinite loop.
Reported by Ricardo V G:
http://mailman.nginx.org/pipermail/nginx-devel/2012-July/002494.html
Diffstat (limited to 'src')
-rw-r--r-- | src/os/win32/ngx_process.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/os/win32/ngx_process.c b/src/os/win32/ngx_process.c index 87e8f9a2a..67c6b121a 100644 --- a/src/os/win32/ngx_process.c +++ b/src/os/win32/ngx_process.c @@ -196,6 +196,7 @@ failed: if (ngx_processes[s].handle) { ngx_close_handle(ngx_processes[s].handle); + ngx_processes[s].handle = NULL; } return NGX_INVALID_PID; |