On 4/13/22 5:41 PM, Yann Ylavic wrote:
> On Wed, Apr 13, 2022 at 4:30 PM Ruediger Pluem <rpl...@apache.org> wrote:
>>
>> While looking at PR65769 I stumbled across the below in event.c (same in 
>> worker.c)
>>
>> 3460                /* Don't perform idle maintenance when a child dies,
>> 3461                 * only do it when there's a timeout.  Remember only a
>> 3462                 * finite number of children can die, and it's pretty
>> 3463                 * pathological for a lot to die suddenly.
>> 3464                 */
>> 3465                continue;
>>
>> In case several processes or even all die by a segfault we would wait until 
>> we have processed all that processes plus one second
>> until we start new processes. Shouldn't we perform an 
>> perform_idle_server_maintenance in case the process died because of a fatal
>> signal?
> 
> +1
> 

In order to solve this I would like to add another APEXIT_ constant (e.g. 
APEXIT_FATAL_SIGNAL). Looking at httpd.h
the values of the existing constants seem a little bit strange:

/** a normal exit */
#define APEXIT_OK               0x0
/** A fatal error arising during the server's init sequence */
#define APEXIT_INIT             0x2
/**  The child died during its init sequence */
#define APEXIT_CHILDINIT        0x3
/**
 *   The child exited due to a resource shortage.
 *   The parent should limit the rate of forking until
 *   the situation is resolved.
 */
#define APEXIT_CHILDSICK        0x7
/**
 *     A fatal error, resulting in the whole server aborting.
 *     If a child exits with this error, the parent process
 *     considers this a server-wide fatal error and aborts.
 */
#define APEXIT_CHILDFATAL       0xf


I haven't found any hint during my investigation why they are as they are on 
not just 1, 2, 3, ....
Any ideas?


Regards

RĂ¼diger

Reply via email to