Exception with ngx_event_timer_init() in win32

bigplum nginx-forum at nginx.us
Wed Jul 13 12:19:52 MSD 2011


Hi, 

In win32 native api file: ngx_process_cycle.c init_process will call
ngx_event_timer_init(), but the function ngx_mutex_init() does not
implement for  win32 now, so ngx_event_timer_mutex will be set to 1.

And this function ngx_event_timer_init() will be called again in
ngx_worker_thread(). The statement will access a invalid memory:

        ngx_event_timer_mutex->log = log;
 
Setting deamon and master_process to off in nginx.conf, this exception
will be reproduced.

So why ngx_modules[n]->init_process called twice in
ngx_single_process_cycle(), but ngx_worker_process_cycle called once
only? 

    for (n = 0; ngx_modules[n]; n++) {
        if (ngx_modules[n]->init_process) {
            if (ngx_modules[n]->init_process(cycle) == NGX_ERROR) {
                /* fatal */
                exit(2);
            }
        }
    }

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,212322,212322#msg-212322




More information about the nginx mailing list