Fix pg_dump's sigTermHandler() to use _exit() not exit(). 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/[email protected] Branch ------ REL_11_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/4ea5cf403824e98932aa17c1c00f9c5241daf89d Modified Files -------------- src/bin/pg_dump/parallel.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
