mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Ignore interrupts during quickdie().
Once the administrator has called for an immediate shutdown or a backend crash has triggered a reinitialization, no mere SIGINT or SIGTERM should change that course. Such derailment remains possible when the signal arrives before quickdie() blocks signals. That being a narrow race affecting most PostgreSQL signal handlers in some way, leave it for another patch. Back-patch this to all supported versions.
This commit is contained in:
parent
1eea0ebddc
commit
374652fb6d
@ -2524,6 +2524,13 @@ quickdie(SIGNAL_ARGS)
|
|||||||
sigaddset(&BlockSig, SIGQUIT); /* prevent nested calls */
|
sigaddset(&BlockSig, SIGQUIT); /* prevent nested calls */
|
||||||
PG_SETMASK(&BlockSig);
|
PG_SETMASK(&BlockSig);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prevent interrupts while exiting; though we just blocked signals that
|
||||||
|
* would queue new interrupts, one may have been pending. We don't want a
|
||||||
|
* quickdie() downgraded to a mere query cancel.
|
||||||
|
*/
|
||||||
|
HOLD_INTERRUPTS();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we're aborting out of client auth, don't risk trying to send
|
* If we're aborting out of client auth, don't risk trying to send
|
||||||
* anything to the client; we will likely violate the protocol, not to
|
* anything to the client; we will likely violate the protocol, not to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user