Fix autovacuum work item error handling
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 30 Oct 2017 14:52:02 +0000 (15:52 +0100)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 30 Oct 2017 14:52:02 +0000 (15:52 +0100)
commitbe72b9c378bfe99a3d175c98d36dc150229f4faf
treefa9fdd0b62e905ebd1fa9881eb00d0fe8da9c96a
parent77954f996cdb31ead2718aa3a9b4878da382e385
Fix autovacuum work item error handling

In autovacuum's "work item" processing, a few strings were allocated in
the current transaction's memory context, which goes away during error
handling; if an error happened during execution of the work item, the
pfree() calls to clean up afterwards would try to release already-released
memory, possibly leading to a crash.  In branch master, this was already
fixed by commit 335f3d04e4c8, so backpatch that to REL_10_STABLE to fix
the problem there too.

As a secondary problem, verify that the autovacuum worker is connected
to the right database for each work item; otherwise some items would be
discarded by workers in other databases.

Reported-by: Justin Pryzby
Discussion: https://postgr.es/m/20171014035732.GB31726@telsasoft.com
src/backend/postmaster/autovacuum.c