Possible cause and solution of 100% cpu and massive log file in Windows

Ricardo V G ricvgdev at gmail.com
Mon Jul 23 16:44:47 UTC 2012

On Mon, Jul 23, 2012 at 12:34 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> Hello!
> On Wed, Jul 18, 2012 at 04:24:30PM -0400, Ricardo V G wrote:
>> Recently one of my employer's products (Trend Micro) that includes
>> nginx Windows binary had an issue similar to [1] where the error
>> message "[alert] 2548#2552: WaitForMultipleObjects() failed (6: The
>> handle is invalid)" is generated indefinitely hence creating a massive
>> log file. This wasn't new. Previously a change was done to the
>> configuration and it seemed that the issue was fixed. But it
>> reappeared and I was asked to look into it. Here's what I think could
>> be the problem along with the solution (patch) at the end of this
>> email.
>> When creating threads in a Windows system the following calls are made
>> (using release 1.2.2):
>> main() ->
>>     ngx_master_process_cycle() ->
>>         ngx_start_worker_processes() ->
>>             ngx_start_worker_processes() ->
>>                 ngx_spawn_process()
>> The issue appears in one documented case when
>> ngx_start_worker_processes() fails to create a thread and the
>> following error message is generated:
>>     [alert] 2548#2552: the event "ngx_master_2548" was not signaled for 5s
>> When this message is generated, the execution jumps to the failed
>> label using a goto in os/win32/ngx_process.c at line 150. From there
>> on, the function attempts to close all opened handles and returns an
>> error in the form of an invalid process/thread ID. It's important to
>> note that the thread handle is closed if necessary but the global
>> variable that holds it is not cleared (i.e. the global array
>> ngx_processes[] defined in os/win32/ngx_process.c at line 17 keeps all
>> handles).
> [...]
> Good catch, thanks.  I've committed a slightly modified version
> of your patch.
> Could you please provide your full name for CHANGES?
> Maxim Dounin

You're welcome, I'm glad that I could help.

Ricardo Villalobos Guevara

More information about the nginx-devel mailing list