Re: memory leak in dbase_redo()
Chao Li <li.evan.chao@gmail.com>
From: Chao Li <li.evan.chao@gmail.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Andres Freund <andres@anarazel.de>,
pgsql-hackers@postgresql.org,
Robert Haas <robertmhaas@gmail.com>
Date: 2025-10-09T22:41:52Z
Lists: 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/
Commits
-
dbase_redo: Fix Valgrind-reported memory leak
- ff47f9c16c2f 19 (unreleased) landed
- f9993ac646b9 17.7 landed
- c72b5c536032 16.11 landed
- 33e7b4a7c7da 18.1 landed
- 23b316c36ab4 15.15 landed
-
Fix replay of create database records on standby
- 9e4f914b5eba 16.0 cited