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