pgsql: Fix crash when canceling parallel query

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix crash when canceling parallel query
Date: 2018-02-16 21:22:05
Message-ID: E1emnSH-0000PJ-Dx@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix crash when canceling parallel query

elog(FATAL) would end up calling PortalCleanup(), which would call
executor shutdown code, which could fail and crash, especially under
parallel query. This was introduced by
8561e4840c81f7e345be2df170839846814fa004, which did not want to mark an
active portal as failed by a normal transaction abort anymore. But we
do need to do that for an elog(FATAL) exit. Introduce a variable
shmem_exit_inprogress similar to the existing proc_exit_inprogress, so
we can tell whether we are in the FATAL exit scenario.

Reported-by: Andres Freund <andres(at)anarazel(dot)de>

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ad9a274778d2d88c46b90309212b92ee7fdf9afe

Modified Files
--------------
src/backend/storage/ipc/ipc.c | 7 +++++++
src/backend/utils/mmgr/portalmem.c | 8 ++++++++
src/include/storage/ipc.h | 1 +
3 files changed, 16 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2018-02-16 22:48:39 pgsql: Do execGrouping.c via expression eval machinery, take two.
Previous Message Tom Lane 2018-02-16 17:14:14 pgsql: Remove some inappropriate #includes.