Subject: [PATCH] Silence a new Valgrind warning

From: Aleksander Alekseev <[email-masked]>
Date: Thu, 12 Mar 2026 15:56:26 +0300

Hi,

Commit 4966bd3ed95e revealed a non-critical memory leak in
ProcessStartupPacket() which Valgrind is very much upset about:

```
63 (32 direct, 31 indirect) bytes in 1 blocks are definitely lost in
loss record 355 of 800
   at 0x9D260C: palloc (mcxt.c:1411)
   by 0x54B3D2: new_list (list.c:137)
   by 0x54B8CC: lappend (list.c:344)
   by 0x78B41A: ProcessStartupPacket (backend_startup.c:786)
   by 0x78A411: BackendInitialize (backend_startup.c:295)
   by 0x789F2F: BackendMain (backend_startup.c:110)
   by 0x67EEED: postmaster_child_launch (launch_backend.c:268)
   by 0x685D50: BackendStartup (postmaster.c:3606)
   by 0x6830CF: ServerLoop (postmaster.c:1713)
   by 0x682982: PostmasterMain (postmaster.c:1403)
   by 0x547DFE: main (main.c:231)
```

The proposed patch silences the warnings.

-- 
Best regards,
Aleksander Alekseev
From 079a646f4db6ff80ec02a6bb8884f4c5b075345c Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <[email-masked]>
Date: Thu, 12 Mar 2026 14:53:38 +0300
Subject: [PATCH v1] Free memory allocated for unrecognized_protocol_options

Since 4966bd3ed95e Valgrind started to warn about little amount of memory being
leaked in ProcessStartupPacket(). This is not critical but the warnings may
distract from real issues. Fix it by freeing the list after use.

Author: Aleksander Alekseev <[email-masked]>
Reviewed-by: TODO FIXME
Discussion: TODO FIXME
---
 src/backend/tcop/backend_startup.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/backend/tcop/backend_startup.c b/src/backend/tcop/backend_startup.c
index c517115927c..5abf276c898 100644
--- a/src/backend/tcop/backend_startup.c
+++ b/src/backend/tcop/backend_startup.c
@@ -825,6 +825,8 @@ ProcessStartupPacket(Port *port, bool ssl_done, bool gss_done)
 		if (PG_PROTOCOL_MINOR(proto) > PG_PROTOCOL_MINOR(PG_PROTOCOL_LATEST) ||
 			unrecognized_protocol_options != NIL)
 			SendNegotiateProtocolVersion(unrecognized_protocol_options);
+
+		list_free_deep(unrecognized_protocol_options);
 	}
 
 	/* Check a user name was given. */
-- 
2.43.0

---

From: Aleksander Alekseev <[email-masked]>
Date: Fri, 13 Mar 2026 20:30:41 +0300

Hi Heikki,

> I don't see that warning. What valgrind options did you use?
>
> The patch looks good to me.

Here is the script I'm using:

https://github.com/afiskon/pgscripts/blob/master/valgrind-meson.sh

-- 
Best regards,
Aleksander Alekseev

---

From: Peter Geoghegan <[email-masked]>
Date: Fri, 13 Mar 2026 13:33:01 -0400

> I don't see that warning. What valgrind options did you use?

I have seen this one, though only when --leak-check=yes is passed to Valgrind.

-- 
Peter Geoghegan