diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2022-08-31 16:23:20 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2022-08-31 16:23:20 -0400 |
commit | 8fc6b9635dd39db23614ea8de5c89641b8e23436 (patch) | |
tree | 5421dd9fefe8d9b4d8f2330e390bf45e657a8034 /src/backend/access/gist/gistxlog.c | |
parent | a53e0ea782c52da0fd8f9605a63aba276fc17c13 (diff) | |
download | postgresql-8fc6b9635dd39db23614ea8de5c89641b8e23436.tar.gz postgresql-8fc6b9635dd39db23614ea8de5c89641b8e23436.zip |
Prevent long-term memory leakage in autovacuum launcher.
get_database_list() failed to restore the caller's memory context,
instead leaving current context set to TopMemoryContext which is
how CommitTransactionCommand() leaves it. The callers both think
they are using short-lived contexts, for the express purpose of
not having to worry about cleaning up individual allocations.
The net effect therefore is that supposedly short-lived allocations
could accumulate indefinitely in the launcher's TopMemoryContext.
Although this has been broken for a long time, it seems we didn't
have any obvious memory leak here until v15's rearrangement of the
stats logic. I (tgl) am not entirely convinced that there's no
other leak at all, though, and we're surely at risk of adding one
in future back-patched fixes. So back-patch to all supported
branches, even though this may be only a latent bug in pre-v15.
Reid Thompson
Discussion: https://postgr.es/m/972a4e12b68b0f96db514777a150ceef7dcd2e0f.camel@crunchydata.com
Diffstat (limited to 'src/backend/access/gist/gistxlog.c')
0 files changed, 0 insertions, 0 deletions