Hi On Sat, 21 Feb 2026, Henrik TJ wrote:
This is fairly inconsequential as memory leaks goes, but if -D is used when starting postgres, the memory allocated by stdrup() will never be freed. Found with valgrind.
Rebased version of this patch attached. To see valgrind catch the leak: 1. Compile with valgrind. 2. Run postgres with valgrind: valgrind --leak-check=full ./pgrun/bin/postgres -D pgdata/The -D argument is required, as it is the argument from there that does not get freed. This should yield:
==444240== 8 bytes in 1 blocks are definitely lost in loss record 29 of 849 ==444240== at 0x4840B26: malloc (vg_replace_malloc.c:447) ==444240== by 0x5114A2E: strdup (strdup.c:42) ==444240== by 0x6B7CE0: PostmasterMain (../src/backend/postmaster/postmaster.c:656) ==444240== by 0x602555: main (../src/backend/main/main.c:231) best regards, Henrik
From 493a0756082acac48cb02ea4fbbe4c8f4c34b0b7 Mon Sep 17 00:00:00 2001 From: Henrik TJ <[email protected]> Date: Sat, 18 Apr 2026 16:20:31 +0200 Subject: [PATCH] Fix userDoption not getting freed in postmaster --- src/backend/postmaster/postmaster.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 90c7c4528e8..476e87001f1 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -789,6 +789,8 @@ PostmasterMain(int argc, char *argv[]) */ if (!SelectConfigFiles(userDoption, progname)) ExitPostmaster(2); + if (userDoption != NULL) + free(userDoption); if (output_config_variable != NULL) { -- 2.53.0
