Re: memory leak in dbase_redo() - Mailing list pgsql-hackers

From Chao Li
Subject Re: memory leak in dbase_redo()
Date
Msg-id 680A8193-47B0-48B7-AA68-EB1BC7A69A07@gmail.com
Whole thread Raw
In response to Re: memory leak in dbase_redo()  (Nathan Bossart <nathandbossart@gmail.com>)
List pgsql-hackers


On Oct 9, 2025, at 22:58, Nathan Bossart <nathandbossart@gmail.com> wrote:

On Thu, Oct 09, 2025 at 08:08:05AM -0400, Andres Freund wrote:
And I think it is right. XLOG_DBASE_CREATE_FILE_COPY is careful to
pfree(parent_path), but XLOG_DBASE_CREATE_WAL_LOG isn't.

It looks like this was introduced by commit 9e4f914, which was
back-patched, but the code path in question first appears in v15.  So,
presumably something like the following needs to be back-patched that far.
I can take care of it unless someone else wants it.

diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 2793fd83771..4d65e8c46c2 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -3375,6 +3375,7 @@ dbase_redo(XLogReaderState *record)
        parent_path = pstrdup(dbpath);
        get_parent_directory(parent_path);
        recovery_create_dbdir(parent_path, true);
+        pfree(parent_path);

        /* Create the database directory with the version file. */
        CreateDirAndVersionFile(dbpath, xlrec->db_id, xlrec->tablespace_id,


pstrdup() allocates memory from current context for dest string, so the memory it returns should be free-ed. LGTM.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/




pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: [PATCH] Add tests for Bitmapset
Next
From: Peter Smith
Date:
Subject: Re: [PROPOSAL] Termination of Background Workers for ALTER/DROP DATABASE