Skip to content
  • Chris Darroch's avatar
    Make the worker and event MPMs not touch the scoreboard when · 053c9598
    Chris Darroch authored
    handling a fork() failure.  The previous behaviour appears to have
    been inherited from the prefork MPM, where is it appropriate.
    
    The prefork MPM sets thread_limit to 1 and therefore each
    child process has a single worker_score structure in the scoreboard's
    array, i.e., ap_scoreboard_image->servers[slot][0].  In make_child(),
    it sets this structure's status to SERVER_STARTING, and then does
    a fork(); if the fork() fails, it resets the status to SERVER_DEAD.
    
    The worker and event MPMs, by constrast, obviously use multiple
    worker_score structures per child process.  They may also be
    in use by worker threads from a previous generation at any particular
    moment.  Therefore make_child() and the parent process in general
    doesn't normally update them; make_child() doesn't set them all
    to SERVER_STARTING before doing fork(), for example.
    
    So, make_child() shouldn't set them to SERVER_DEAD if fork()
    fails (and even if it should, it certainly shouldn't be just
    updating the first one).
    
    
    
    git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@409693 13f79535-47bb-0310-9956-ffa450edef68
    053c9598
To find the state of this project's repository at the time of any of these versions, check out the tags.