• Tom Lane's avatar
    In bootstrap mode, use default signal handling for SIGINT etc. · fb489e4b
    Tom Lane authored
    Previously, the code pointed the standard process-termination signals
    to postgres.c's die().  That would typically result in an attempt to
    execute a transaction abort, which is not possible in bootstrap mode,
    leading to PANIC.  This choice seems to be a leftover from an old code
    structure in which the same signal-assignment code was used for many
    sorts of auxiliary processes, including interactive standalone
    backends.  It's not very sensible for bootstrap mode, which has no
    interest in either interactivity or continuing after an error.  We can
    get better behavior with less effort by just letting normal process
    termination happen, after which the parent initdb process will clean up.
    
    This is basically cosmetic in any case, since initdb will react the
    same way whether bootstrap dies on a signal or abort().  Given the
    lack of previous complaints, I don't feel a need to back-patch,
    even though the behavior is old.
    
    Discussion: https://postgr.es/m/3850b11a.5121.16aaf827e4a.Coremail.thunder1@126.com
    fb489e4b
bootstrap.c 29.5 KB