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.
Best,
Ricardo Villalobos Guevara
More information about the nginx-devel
mailing list