pgsql: Fix snapshot reference leak if lo_export fails. - Mailing list pgsql-committers

From Heikki Linnakangas
Subject pgsql: Fix snapshot reference leak if lo_export fails.
Date
Msg-id E1miCof-0006bx-EN@gemulon.postgresql.org
Whole thread Raw
List 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_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/07070c0082aacc9e9bf09d1d08bc3a60c999332e

Modified Files
--------------
src/backend/libpq/be-fsstubs.c             | 146 ++++++++++++++---------------
src/backend/storage/large_object/inv_api.c |  27 +++---
src/test/regress/input/largeobject.source  |  11 +++
src/test/regress/output/largeobject.source |  11 +++
4 files changed, 104 insertions(+), 91 deletions(-)


pgsql-committers by date:

Previous
From: Peter Eisentraut
Date:
Subject: pgsql: Fix incorrect format placeholder
Next
From: Daniel Gustafsson
Date:
Subject: Re: pgsql: Fix snapshot reference leak if lo_export fails.