[nginx] svn commit: r4758 - trunk/src/os/win32

mdounin at mdounin.ru mdounin at mdounin.ru
Mon Jul 23 16:37:25 UTC 2012


Author: mdounin
Date: 2012-07-23 16:37:24 +0000 (Mon, 23 Jul 2012)
New Revision: 4758
URL: http://trac.nginx.org/nginx/changeset/4758/nginx

Log:
Win32: fixed cpu hog after process startup failure.

If ngx_spawn_process() failed while starting a process, the handle of a
handle of a processes 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


Modified:
   trunk/src/os/win32/ngx_process.c

Modified: trunk/src/os/win32/ngx_process.c
===================================================================
--- trunk/src/os/win32/ngx_process.c	2012-07-20 08:21:59 UTC (rev 4757)
+++ trunk/src/os/win32/ngx_process.c	2012-07-23 16:37:24 UTC (rev 4758)
@@ -196,6 +196,7 @@
 
     if (ngx_processes[s].handle) {
         ngx_close_handle(ngx_processes[s].handle);
+        ngx_processes[s].handle = NULL;
     }
 
     return NGX_INVALID_PID;



More information about the nginx-devel mailing list