Re: [PATCH] Fix memory leak of reply_message in walreceiver

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: DaeMyung Kang <charsyam(at)gmail(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: [PATCH] Fix memory leak of reply_message in walreceiver
Date: 2026-04-27 00:46:02
Message-ID: ae6xymlfUepxsT6n@paquier.xyz
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Apr 27, 2026 at 01:59:09AM +0900, DaeMyung Kang wrote:
> initStringInfo() unconditionally allocates a fresh ~1KB buffer with
> palloc() and overwrites the existing data pointer without freeing the
> previous one. So every time the walreceiver re-enters the streaming
> path -- e.g., after a timeline switch, end-of-WAL, or any other
> condition that drives the outer for(;;) loop to iterate -- the prior
> buffer is leaked. The leak is bounded per streaming restart but
> accumulates over the lifetime of a long-running standby that
> restarts streaming often.

This is a problem similar to [1], and I'd agree about cleaning that up
properly.

> This appears to date back to commit add6c3179a4 ("Make the streaming
> replication protocol messages architecture-independent.", 2012), so
> the fix is likely a candidate for back-patching to all supported
> branches.

This is minor, so I don't really see a point in back-patching. Same
reason as the other thread.

I'll go merge that together.

[1]: https://www.postgresql.org/message-id/ae6vp9L-GUb0ERTF@paquier.xyz
--
Michael

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2026-04-27 00:50:28 Re: Fix bug with accessing to temporary tables of other sessions
Previous Message Michael Paquier 2026-04-27 00:36:55 Re: [PATCH] Fix memory leak of primary_sysid in walreceiver