Jeff Trawick wrote:
On Wed, Feb 4, 2009 at 11:09 AM, Mladen Turk <mt...@apache.org <mailto:mt...@apache.org>> wrote:

    Hi,

    I would like to commit this module to trunk.
    It's a watchdog module that creates a worker threads
    either in parent, child via an API, and it's not for
    standalone use, but for other module usage like
    mod_heartbeat, probably mod_jk and others that need
    maintenance threads.


It seems scary to me to have the MPM parent on Unix forking children while a separate thread in that same process is running arbitrary code. Surprising problems can crop up when this arbitrary code is in certain states (maybe a mutex gets inherited in held state by the new MPM child?)

I once had a rather harsh quote on this topic from Ulrich Drepper taped to my office wall amidst TCP/IP diagrams and definitions of C's break and continue in very large print, but sadly it has gone missing.
However, I just found another one which should suffice:

* Ulrich Drepper <drep...@redhat.com <mailto:drep...@redhat.com>> [030910 
15:41]:
Aidan Van Dyk wrote:

> The particular problem I'm seeing is with syslog_lock.


The standard doesn't guarantee that any functions but exec works after
fork in a multi-threaded program.

That doesn't match the profile of an MPM child process ;)


^^ we have this problem on OSX too -- calling certain carbon APIs functions from apache, will cause it to abort() the child.

-Paul

Reply via email to