CVSROOT: /cvsroot
Module name: pgsql-server
Changes by: tgl@postgresql.org 02/09/15 21:24:41
Modified files:
src/backend/commands: async.c
src/backend/tcop: postgres.c
Log message:
Fix for rare race-condition-like failure: if a backend receives SIGUSR2
(notify/SI-overrun interrupt) while it is in process of doing proc_exit,
it is possible for Async_NotifyHandler() to try to start a transaction
when one is already running. This leads to Asserts() or worse. I think
it may only be possible to occur when frontend synchronization is lost
(ie, the elog(FATAL) in SocketBackend() fires), but that is a standard
occurrence after error during COPY. In any case, I have seen this
failure occur during regression tests, so it is definitely possible.