From: Michael Paquier Date: Mon, 8 Jun 2026 06:29:16 +0000 (+0900) Subject: Fix memory leak in pgstat_progress_parallel_incr_param() X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=b20c952ce70370b22ea7a206d7b674a322397d28;p=thirdparty%2Fpostgresql.git Fix memory leak in pgstat_progress_parallel_incr_param() When called from a parallel worker, this function calls initStringInfo() and pq_beginmessage(), causing a StringInfo allocation to happen twice. pq_endmessage() frees only the second allocation, with each call leaking ~1 kB into the per-worker memory context. This could cause a few hundred megabytes worth of memory to pile up until the worker exits (the message allocations happen in the parallel worker context), with the situation being worse the longer a parallel worker runs. Oversight in f1889729dd3. Author: Baji Shaik Reviewed-by: Sami Imseih Reviewed-by: Tristan Partin Discussion: https://postgr.es/m/CA+fm-RMopta1Dmq8udiU5sp+zwTvhUf4+xfbr3rZDfczH+p-xw@mail.gmail.com Backpatch-through: 17 --- diff --git a/src/backend/utils/activity/backend_progress.c b/src/backend/utils/activity/backend_progress.c index b0359771de5..6d2049105ab 100644 --- a/src/backend/utils/activity/backend_progress.c +++ b/src/backend/utils/activity/backend_progress.c @@ -100,8 +100,6 @@ pgstat_progress_parallel_incr_param(int index, int64 incr) { static StringInfoData progress_message; - initStringInfo(&progress_message); - pq_beginmessage(&progress_message, PqMsg_Progress); pq_sendint32(&progress_message, index); pq_sendint64(&progress_message, incr);