From 4764ae823b78a602ebfe01a91084c4b1ec931554 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 1 Jan 2002 23:16:22 +0000 Subject: [PATCH] Do not accept interrupts in RESUME_INTERRUPTS() and END_CRIT_SECTION() macros, but only at explicit CHECK_FOR_INTERRUPTS() calls. Not clear whether overenthusiastic acceptance of interrupts accounts for any real bugs, but it definitely seems risky and unnecessary. --- src/backend/tcop/postgres.c | 5 ++--- src/include/miscadmin.h | 9 +++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 85d0346b65..68ae795e6a 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.243 2001/12/04 19:40:17 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.244 2002/01/01 23:16:22 tgl Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -1626,7 +1626,7 @@ PostgresMain(int argc, char *argv[], const char *username) if (!IsUnderPostmaster) { puts("\nPOSTGRES backend interactive interface "); - puts("$Revision: 1.243 $ $Date: 2001/12/04 19:40:17 $\n"); + puts("$Revision: 1.244 $ $Date: 2002/01/01 23:16:22 $\n"); } /* @@ -1703,7 +1703,6 @@ PostgresMain(int argc, char *argv[], const char *username) /* * Exit interrupt holdoff section we implicitly established above. - * (This could result in accepting a cancel or die interrupt.) */ RESUME_INTERRUPTS(); } diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 703ca7f015..425f96de3e 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: miscadmin.h,v 1.97 2001/11/05 17:46:31 momjian Exp $ + * $Id: miscadmin.h,v 1.98 2002/01/01 23:16:22 tgl Exp $ * * NOTES * some of the information in this file should be moved to @@ -43,7 +43,8 @@ * or die interrupt. The HOLD_INTERRUPTS() and RESUME_INTERRUPTS() macros * allow code to ensure that no cancel or die interrupt will be accepted, * even if CHECK_FOR_INTERRUPTS() gets called in a subroutine. The interrupt - * will be held off until the last matching RESUME_INTERRUPTS() occurs. + * will be held off until CHECK_FOR_INTERRUPTS() is done outside any + * HOLD_INTERRUPTS() ... RESUME_INTERRUPTS() section. * * Special mechanisms are used to let an interrupt be accepted when we are * waiting for a lock or when we are waiting for command input (but, of @@ -85,8 +86,6 @@ extern void ProcessInterrupts(void); do { \ Assert(InterruptHoldoffCount > 0); \ InterruptHoldoffCount--; \ - if (InterruptPending) \ - ProcessInterrupts(); \ } while(0) #define START_CRIT_SECTION() (CritSectionCount++) @@ -95,8 +94,6 @@ extern void ProcessInterrupts(void); do { \ Assert(CritSectionCount > 0); \ CritSectionCount--; \ - if (InterruptPending) \ - ProcessInterrupts(); \ } while(0) -- GitLab