• Tom Lane's avatar
    Fix pg_dump's sigTermHandler() to use _exit() not exit(). · cd23a201
    Tom Lane authored
    sigTermHandler() tried to be careful to invoke only operations that
    are safe to do in a signal handler.  But for some reason we forgot
    that exit(3) is not among those, because it calls atexit handlers
    that might do various random things.  (pg_dump itself installs no
    atexit handlers, but e.g. OpenSSL does.)  That led to crashes or
    lockups when attempting to terminate a parallel dump or restore
    via a signal.
    
    Fix by calling _exit() instead.
    
    Per bug #16199 from Raúl Marín.  Back-patch to all supported branches.
    
    Discussion: https://postgr.es/m/16199-cb2f121146a96f9b@postgresql.org
    cd23a201
parallel.c 47.5 KB