]> granicus.if.org Git - postgresql/commit
Fix crash when canceling parallel query
authorPeter Eisentraut <peter_e@gmx.net>
Thu, 1 Feb 2018 22:07:38 +0000 (17:07 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Fri, 16 Feb 2018 21:21:24 +0000 (16:21 -0500)
commitad9a274778d2d88c46b90309212b92ee7fdf9afe
treee48bd1ffc725696fde3279ffabd4fb316743ab45
parent49bff412edd9eb226e146f6e4db7b5a8e843bd1f
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@anarazel.de>
src/backend/storage/ipc/ipc.c
src/backend/utils/mmgr/portalmem.c
src/include/storage/ipc.h