Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit d41cb86

Browse files
committed
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.
1 parent a49d0b7 commit d41cb86

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/backend/tcop/postgres.c

+7
Original file line numberDiff line numberDiff line change
@@ -2524,6 +2524,13 @@ quickdie(SIGNAL_ARGS)
25242524
sigaddset(&BlockSig, SIGQUIT); /* prevent nested calls */
25252525
PG_SETMASK(&BlockSig);
25262526

2527+
/*
2528+
* Prevent interrupts while exiting; though we just blocked signals that
2529+
* would queue new interrupts, one may have been pending. We don't want a
2530+
* quickdie() downgraded to a mere query cancel.
2531+
*/
2532+
HOLD_INTERRUPTS();
2533+
25272534
/*
25282535
* If we're aborting out of client auth, don't risk trying to send
25292536
* anything to the client; we will likely violate the protocol, not to

0 commit comments

Comments
 (0)