From: | Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Fix snapshot reference leak if lo_export fails. |
Date: | 2021-11-03 09:44:21 |
Message-ID: | E1miCof-0006c6-Fb@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Fix snapshot reference leak if lo_export fails.
If lo_export() fails to open the target file or to write to it, it leaks
the created LargeObjectDesc and its snapshot in the top-transaction
context and resource owner. That's pretty harmless, it's a small leak
after all, but it gives the user a "Snapshot reference leak" warning.
Fix by using a short-lived memory context and no resource owner for
transient LargeObjectDescs that are opened and closed within one function
call. The leak is easiest to reproduce with lo_export() on a directory
that doesn't exist, but in principle the other lo_* functions could also
fail.
Backpatch to all supported versions.
Reported-by: Andrew B
Reviewed-by: Alvaro Herrera
Discussion: https://www.postgresql.org/message-id/32bf767a-2d65-71c4-f170-122f416bab7e@iki.fi
Branch
------
REL_10_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/7b55bb892a0b3bf5c2e44873d091508eea8bba45
Modified Files
--------------
src/backend/libpq/be-fsstubs.c | 147 ++++++++++++++---------------
src/backend/storage/large_object/inv_api.c | 36 ++++---
src/test/regress/input/largeobject.source | 11 +++
src/test/regress/output/largeobject.source | 11 +++
4 files changed, 109 insertions(+), 96 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel Gustafsson | 2021-11-03 11:06:58 | Re: pgsql: Fix snapshot reference leak if lo_export fails. |
Previous Message | Peter Eisentraut | 2021-11-03 06:38:12 | pgsql: Fix incorrect format placeholder |