• Alvaro Herrera's avatar
    Fix autovacuum work item error handling · be72b9c3
    Alvaro Herrera authored
    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 335f3d04, 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
    be72b9c3
autovacuum.c 97.6 KB