Fix memory leak in LogStandbySnapshot().
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 4 Jun 2013 18:58:46 +0000 (14:58 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 4 Jun 2013 18:58:46 +0000 (14:58 -0400)
commitdbc6eb1f4b840d252031419d4bf694316812124f
treeb72f25c03ff11e29dd7e76fbd43781311d77c32d
parent79e15c7d86d3f781cc390a5a04db18254ce97b79
Fix memory leak in LogStandbySnapshot().

The array allocated by GetRunningTransactionLocks() needs to be pfree'd
when we're done with it.  Otherwise we leak some memory during each
checkpoint, if wal_level = hot_standby.  This manifests as memory bloat
in the checkpointer process, or in bgwriter in versions before we made
the checkpointer separate.

Reported and fixed by Naoya Anzai.  Back-patch to 9.0 where the issue
was introduced.

In passing, improve comments for GetRunningTransactionLocks(), and add
an Assert that we didn't overrun the palloc'd array.
src/backend/storage/ipc/standby.c
src/backend/storage/lmgr/lock.c