mod_fcgid prevents graceful Apache restart on WindowsWhen mod_fcgid 2.2 is used 
with Apache on 
Windows (Apache 2.2.8), it prevents Apache from performing a "graceful" restart.

mod_fcgid starts its "Process Manager" worker_thread and wakeup_thread in the 

  file: arch/win32/fcgid_pm_win.c*checkout*/mod-fcgid/mod_fcgid/arch/win32/fcgid_pm_win.c

It schedules an APR pool cleanup to stop these two threads in the 
procmgr_child_init() function.

This works in the Apache child process, but it causes problems in the Apache 
parent process.

The Apache parent process runs all configuration steps - so both threads are 
started in the parent 
process (although they don't so anything useful in this process).

The parent does not run child_init hooks, so there is no cleanup registered to 
stop these threads in 
the parent process.

When Apache is restarted (i.e. a "graceful" restart by Ctrl-Break in the Apache 
window, or setting 
the "ap{pid}_restart" event from a program) - these threads in the parent 
process are left running. 
  They cause an access violation once the library is unloaded.

A solution is to register the pool cleanup against the configuration pool 
(pconf) immediately after 
these threads are launched in procmgr_post_config().  The procmgr_child_init() 
function can be 

This will make the worker_thread and wakeup_thread in the parent process get 
shut down correctly, 
allowing Apache to perform a "graceful" restart without access violations.


--- fcgid_pm_win.orig   2008-04-05 18:23:34.434024000 -0400
+++ fcgid_pm_win.c  2008-04-05 18:23:42.902672000 -0400
@@ -101,6 +101,9 @@

+   apr_pool_cleanup_register(pconf, main_server,
+                             procmgr_stop_procmgr, apr_pool_cleanup_null);
     return APR_SUCCESS;

@@ -256,9 +259,6 @@
  procmgr_child_init(server_rec * main_server, apr_pool_t * pchild)
-   apr_pool_cleanup_register(pchild, main_server,
-                             procmgr_stop_procmgr, apr_pool_cleanup_null);
-   return APR_SUCCESS;

  int procmgr_must_exit()

This email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2.;198757673;13503038;p?
Mod-fcgid-users mailing list

Reply via email to