Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wVeE0-0026SZ-0v for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 23:45:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVeDy-00FFHH-2L for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 23:45:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wVeDy-00FFGy-0Z for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 23:45:14 +0000 Received: from mail-dy1-x132b.google.com ([2607:f8b0:4864:20::132b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wVeDw-00000001Jc4-0oJF for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 23:45:13 +0000 Received: by mail-dy1-x132b.google.com with SMTP id 5a478bee46e88-304df7ff4c2so2340177eec.0 for ; Fri, 05 Jun 2026 16:45:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780703111; cv=none; d=google.com; s=arc-20240605; b=b+dR1pT5pJk0SIecRFQ7I6NuryMBFTleedy34Sx5wS0/072HuTf9UBzX3m49vo0vBT hrDKx78bVgvgp9PpjS3nOuM0n/z0Ea/Y0iQl/hARWGognvSuGXNyhAGs7CxN+YazqzLs U+WiWJ66+jyj1ihcFutl3vOjThri7LL9CixXwgSbuF+6yiPpknEcO2w1tJJ/btRPDRe9 QGURfbN9tfSjhVz7/n3eHP0fpryEZkbEccSOG+JOa8iVBISWI+JNiHTA9GkZ3ySeYfIZ uKOc0DikN5KRxkJYnZrDAg+O+DGvIlPg+TErKefsdjj5gyl84NXNLpV34SoGo0Xh9lcA Ceaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=UcBP6veIPCF7nSHezwHBtJwaHyG/fbL6eimu0U2DQZg=; fh=SBYVIbztLne7gnPx8hTu/qb5AeLUfbMl8fcsf0nqTMo=; b=LznCfE4HTukTbR0sOG9U4La4uiJdzicxirn9wZGawsEUKyo+JDc/qZLc4skd8EeUXT s68FsxF+ux4Pqb564WBoC5s4gmwbmYQOa1YfKPfMdO7sn7eYjVX75Saz9t6+JR7qlENp RXsYMd72CKzkRi93fWf2CG4b0hcdMxL37yJvZoYQgHi0WdYbm7PdbgmRQ+zT16v7YK1b tyAbmmw93/qOQukI4ooP5YgooYjp+ZXMJVwS/c3s40doeeULPbMcZPWnGpf8rlC/+DRg BADLsnDpbtfJ4GBSOl9swgkFVvrPyA1UpSdUI594MW1xX+rC43x10jwBUqAMos+GdypF 6vGA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780703111; x=1781307911; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=UcBP6veIPCF7nSHezwHBtJwaHyG/fbL6eimu0U2DQZg=; b=ODw8f0sNJnc8aAsXZxtS9WSAe0pJ2BHreEgSFn170GoCmuH3uGG3Y2KuDnlGaiaAsE C4jFGpNrWXFft14GGglXhpCUgsT3sU4fevZQuvRgbeKjWtFwlcnXkn91GZQJVYMhsG0f jB/rk0UZMZhCO+6YiaHZkzuHEiS8gENRzd922+y+MBFSsixvHamQGny6x/dl4OIJ5wac HP+cyllCDpzrB0/aOZTmmHZM3gJY8+DrskBsdYdR4OG8RJgd8Tc1pO/Z/PuqI/mfhsJe hjuuJxFJNAtFEYhqK6cms8qrXZq3/21f11nxlMDm/8e1Phjc+Tj5yt1CKY+51ghFqH9z zEng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780703111; x=1781307911; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UcBP6veIPCF7nSHezwHBtJwaHyG/fbL6eimu0U2DQZg=; b=R3Y7RXklZHKzGt0vuHXyNOzCFF42J+MWnFtj+XrwaTqkmtDurcibHsn25rkyRnYaM0 b9OV1trkZDC3beoCJTHTWACRleW4J5VXdRejPjBi/Kd0W1hI9NuspUbQWY7e1yOD9upn atC2d8j/jX/n8RaNRFfcw8md2xEuBapFJp0hwn9hyKihQJ2Xe0TdQoLskwkwlOhHz46b Wsfl/AcgOKxGcEG/kingxMpg6tcAgAudFvu+/RU+ubmrLsbpW5vZNcjzaqLVIkm0CN8Q pQtoiaYI00m3QfpebKjUwlIx7uWG5p4F2A0V+mrjYesMuVWMsu0LUwnafgITR8RvtS4x Yb0A== X-Forwarded-Encrypted: i=1; AFNElJ8o6dUOtO/DK3Z6gDSSHhyFJcIWEyFJP48OBLiUQutqsvs39Do0k9ufWh4VD0xiNpSlZqfrTnOWWtgadGmZ@lists.postgresql.org X-Gm-Message-State: AOJu0YxHyhnMbFL/zcl9b29hYNLzGCbUc+TUcQCOGdOzAEJFKYliFZZ2 v0HmZe7OjwDmeGGuN9yqzsZXUoePln0rAdlOPXaZeLy7bib+LZ/QuHsbTp+R7HNKz/Jb2O10bmv lvsL+keZzsS3VbMiiShavmkKYy9xhFeE= X-Gm-Gg: Acq92OE/PNNFCBJ6qL0uRBqRlj3gdoNRzdtoB7pedOPxRXsn2K75AkFd9p62fNZtRXf pHLGaKq/AirZID3I/oRvby4tIeWyZbanfDrh75CVnOgtF/eo7xFUSrrbvDpLqLTeIIjC4LHINVg Ono+hBnvBDdjrcVvpgrcgRTA4jSi5AicXjr9t+qWfXOYFkLLNtNvXXoK3Pu/8+TgtUgNj9l5gAz IbkbDSbnmdHBiiUflIEuwS3AjMcmbpUyBUd4p1zDY1j+SEJSItE3PkTJD/SQ9da38eTEV2zIF9L gCupJe5bVdwFXS+0XoMYarecMKkqJhRouIsDvTkh+F9QIsntHKtz X-Received: by 2002:a05:7301:da0d:b0:2f4:d190:37bf with SMTP id 5a478bee46e88-3077fff1973mr1647069eec.16.1780703110895; Fri, 05 Jun 2026 16:45:10 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Baji Shaik Date: Fri, 5 Jun 2026 18:44:59 -0500 X-Gm-Features: AVVi8Cfv4ZhcfmY3_ao8kWOmbJonhBxoGW9xoApg6zu8VFAOvyqv9qMBzf2qCxA Message-ID: Subject: Re: [PATCH] Fix memory leak in pgstat_progress_parallel_incr_param() To: Tristan Partin Cc: bertranddrouvot.pg@gmail.com, pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000060ad6106538a401c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000060ad6106538a401c Content-Type: multipart/alternative; boundary="00000000000060ad5f06538a401a" --00000000000060ad5f06538a401a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jun 5, 2026 at 4:29=E2=80=AFPM Tristan Partin w= rote: > This looks pretty reasonable to me. Nice find. Did you think about > keeping the code path as is and just removing the first initStringInfo() > call? Removing the allocation per progress message seems like a good > idea to me. Maybe you could separate this change into two patches. One > to fix the memory leak and another to remove the allocation per message. > A committer could then decide for themselves if the second patch is > worth committing. > Thank you for the review. I hadn't thought of splitting it, but it's a good idea. I see f1889729dd3 itself is in PG17+, so the bug fix is a backport candidate independently of the PG19 caller bb8dff9995f. Patches attached: 0001: drop the redundant initStringInfo() call (backport candidate) 0002: allocate the static buffer once per process via pq_beginmessage_reuse / pq_endmessage_reuse, to avoid the per-call allocation (master only) Thanks, Baji Shaik --00000000000060ad5f06538a401a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Jun 5, 2026 at 4:29=E2=80=AFPM Tr= istan Partin <tristan@partin.io= > wrote:
This looks pretty reasonable to me. Nice find. Did you think about
keeping the code path as is and just removing the first initStringInfo() call? Removing the allocation per progress message seems like a good
idea to me. Maybe you could separate this change into two patches. One
to fix the memory leak and another to remove the allocation per message. A committer could then decide for themselves if the second patch is
worth committing.

Thank you for the review.= =C2=A0 I hadn't thought of splitting it, but it's
a good idea.= =C2=A0 I see f1889729dd3 itself is in PG17+, so the bug fix is
a backpor= t candidate independently of the PG19 caller bb8dff9995f.

Patches at= tached:

=C2=A0 0001: drop the redundant initStringInfo() call (backp= ort candidate)
=C2=A0 0002: allocate the static buffer once per process = via
=C2=A0 =C2=A0 =C2=A0 =C2=A0 pq_beginmessage_reuse / pq_endmessage_re= use, to avoid the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 per-call allocation (maste= r only)

Thanks,
Baji Shaik
--00000000000060ad5f06538a401a-- --00000000000060ad6106538a401c Content-Type: application/octet-stream; name="0001-Fix-memory-leak-in-pgstat_progress_parallel_incr_par.patch" Content-Disposition: attachment; filename="0001-Fix-memory-leak-in-pgstat_progress_parallel_incr_par.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq1klbb50 RnJvbSBjNzk3MmJjOGVlMzRlYzExMTQ0MGJmOTQ4YzBjZWJlNDc2ZmQ4Y2RiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWppIFNoYWlrIDxiYWppLnBnZGV2QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCA1IEp1biAyMDI2IDE4OjQxOjQ3IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIEZp eCBtZW1vcnkgbGVhayBpbiBwZ3N0YXRfcHJvZ3Jlc3NfcGFyYWxsZWxfaW5jcl9wYXJhbSgpCgpX aGVuIGNhbGxlZCBmcm9tIGEgcGFyYWxsZWwgd29ya2VyLCBwZ3N0YXRfcHJvZ3Jlc3NfcGFyYWxs ZWxfaW5jcl9wYXJhbSgpCmNhbGxzIGluaXRTdHJpbmdJbmZvKCkgb24gYSBzdGF0aWMgU3RyaW5n SW5mb0RhdGEgYW5kIHRoZW4gaW1tZWRpYXRlbHkKY2FsbHMgcHFfYmVnaW5tZXNzYWdlKCksIHdo aWNoIGNhbGxzIGluaXRTdHJpbmdJbmZvKCkgYWdhaW4uICBUaGUgc2Vjb25kCmNhbGwgb3Zlcndy aXRlcyBidWYtPmRhdGEgd2l0aCBhIGZyZXNobHkgcGFsbG9jJ2QgYnVmZmVyLCBvcnBoYW5pbmcg dGhlCmZpcnN0IG9uZS4gIHBxX2VuZG1lc3NhZ2UoKSB0aGVuIGZyZWVzIG9ubHkgdGhlIHNlY29u ZCBidWZmZXIsIHNvIGVhY2gKY2FsbCBsZWFrcyB+MSBrQiBpbnRvIHRoZSBwZXItd29ya2VyIG1l bW9yeSBjb250ZXh0LgoKRml4IGJ5IHJlbW92aW5nIHRoZSByZWR1bmRhbnQgaW5pdFN0cmluZ0lu Zm8oKSBjYWxsLgoKT3ZlcnNpZ2h0IG9mIGYxODg5NzI5ZGQzICgiQWRkIG5ldyBwYXJhbGxlbCBt ZXNzYWdlIHR5cGUgdG8gcHJvZ3Jlc3MKcmVwb3J0aW5nIikuCgpBdXRob3I6IEJhamkgU2hhaWsg PGJhamkucGdkZXZAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2Jh Y2tlbmRfcHJvZ3Jlc3MuYyB8IDIgLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfcHJvZ3Jlc3Mu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfcHJvZ3Jlc3MuYwppbmRleCBi MDM1OTc3MWRlNS4uNmQyMDQ5MTA1YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L2JhY2tlbmRfcHJvZ3Jlc3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9iYWNrZW5kX3Byb2dyZXNzLmMKQEAgLTEwMCw4ICsxMDAsNiBAQCBwZ3N0YXRfcHJvZ3Jlc3Nf cGFyYWxsZWxfaW5jcl9wYXJhbShpbnQgaW5kZXgsIGludDY0IGluY3IpCiAJewogCQlzdGF0aWMg U3RyaW5nSW5mb0RhdGEgcHJvZ3Jlc3NfbWVzc2FnZTsKIAotCQlpbml0U3RyaW5nSW5mbygmcHJv Z3Jlc3NfbWVzc2FnZSk7Ci0KIAkJcHFfYmVnaW5tZXNzYWdlKCZwcm9ncmVzc19tZXNzYWdlLCBQ cU1zZ19Qcm9ncmVzcyk7CiAJCXBxX3NlbmRpbnQzMigmcHJvZ3Jlc3NfbWVzc2FnZSwgaW5kZXgp OwogCQlwcV9zZW5kaW50NjQoJnByb2dyZXNzX21lc3NhZ2UsIGluY3IpOwotLSAKMi41MC4xIChB cHBsZSBHaXQtMTU1KQoK --00000000000060ad6106538a401c Content-Type: application/octet-stream; name="0002-Allocate-progress-message-buffer-once-per-parallel-w.patch" Content-Disposition: attachment; filename="0002-Allocate-progress-message-buffer-once-per-parallel-w.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq1klbba1 RnJvbSA5NGUxY2Q2Mzk1NDYxNmY4MTk1Mzk1MGFhZjcxMmZhMmFjZjc4OTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWppIFNoYWlrIDxiYWppLnBnZGV2QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCA1IEp1biAyMDI2IDE4OjQyOjA4IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIEFs bG9jYXRlIHByb2dyZXNzIG1lc3NhZ2UgYnVmZmVyIG9uY2UgcGVyIHBhcmFsbGVsIHdvcmtlcgoK VGhlIHN0YXRpYyBTdHJpbmdJbmZvRGF0YSBkZWNsYXJlZCBpbiBwZ3N0YXRfcHJvZ3Jlc3NfcGFy YWxsZWxfaW5jcl9wYXJhbSgpCndhcyBjbGVhcmx5IGludGVuZGVkIHRvIGJlIGFsbG9jYXRlZCBv bmNlIHBlciBwcm9jZXNzIGFuZCByZXVzZWQgYWNyb3NzCmNhbGxzLCBidXQgdGhlIGJ1Z2d5IGRv dWJsZS1pbml0U3RyaW5nSW5mbygpIHBhdHRlcm4gKGZpeGVkIGluIHRoZQpwcmV2aW91cyBjb21t aXQpIGRlZmVhdGVkIHRoYXQgaW50ZW50OiBlYWNoIGNhbGwgc3RpbGwgYWxsb2NhdGVkIGFuZApm cmVlZCBhIGZyZXNoIGJ1ZmZlciB2aWEgcHFfYmVnaW5tZXNzYWdlKCkgLyBwcV9lbmRtZXNzYWdl KCkuCgpSZXN0b3JlIHRoZSBvcmlnaW5hbCBpbnRlbnQgYnkgaW5pdGlhbGl6aW5nIHRoZSBzdGF0 aWMgYnVmZmVyIG9ubHkgb24KdGhlIGZpcnN0IGNhbGwgYW5kIHN3aXRjaGluZyB0byBwcV9iZWdp bm1lc3NhZ2VfcmV1c2UoKSBhbmQKcHFfZW5kbWVzc2FnZV9yZXVzZSgpLCB3aGljaCByZXNldCBh bmQgcmV1c2UgdGhlIGV4aXN0aW5nIGJ1ZmZlcgp3aXRob3V0IChyZSlhbGxvY2F0aW5nLgoKQXV0 aG9yOiBCYWppIFNoYWlrIDxiYWppLnBnZGV2QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9iYWNrZW5kX3Byb2dyZXNzLmMgfCAxOCArKysrKysrKysrKysrKystLS0K IDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfcHJvZ3Jlc3MuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfcHJvZ3Jlc3MuYwppbmRleCA2ZDIwNDkx MDVhYi4uMDQ4Mzc0MWE4MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L2JhY2tlbmRfcHJvZ3Jlc3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNr ZW5kX3Byb2dyZXNzLmMKQEAgLTk5LDExICs5OSwyMyBAQCBwZ3N0YXRfcHJvZ3Jlc3NfcGFyYWxs ZWxfaW5jcl9wYXJhbShpbnQgaW5kZXgsIGludDY0IGluY3IpCiAJaWYgKElzUGFyYWxsZWxXb3Jr ZXIoKSkKIAl7CiAJCXN0YXRpYyBTdHJpbmdJbmZvRGF0YSBwcm9ncmVzc19tZXNzYWdlOwotCi0J CXBxX2JlZ2lubWVzc2FnZSgmcHJvZ3Jlc3NfbWVzc2FnZSwgUHFNc2dfUHJvZ3Jlc3MpOworCQlz dGF0aWMgYm9vbCBwcm9ncmVzc19tZXNzYWdlX2luaXRpYWxpemVkID0gZmFsc2U7CisKKwkJLyoK KwkJICogSW5pdGlhbGl6ZSB0aGUgbWVzc2FnZSBidWZmZXIgb25jZSBwZXIgcHJvY2VzczsgcHFf YmVnaW5tZXNzYWdlX3JldXNlKCkKKwkJICogYW5kIHBxX2VuZG1lc3NhZ2VfcmV1c2UoKSByZXNl dCBhbmQgcmV1c2UgaXQgb24gZWFjaCBjYWxsIHRvIGF2b2lkCisJCSAqIHBhbGxvYyBvdmVyaGVh ZC4KKwkJICovCisJCWlmICghcHJvZ3Jlc3NfbWVzc2FnZV9pbml0aWFsaXplZCkKKwkJeworCQkJ aW5pdFN0cmluZ0luZm8oJnByb2dyZXNzX21lc3NhZ2UpOworCQkJcHJvZ3Jlc3NfbWVzc2FnZV9p bml0aWFsaXplZCA9IHRydWU7CisJCX0KKworCQlwcV9iZWdpbm1lc3NhZ2VfcmV1c2UoJnByb2dy ZXNzX21lc3NhZ2UsIFBxTXNnX1Byb2dyZXNzKTsKIAkJcHFfc2VuZGludDMyKCZwcm9ncmVzc19t ZXNzYWdlLCBpbmRleCk7CiAJCXBxX3NlbmRpbnQ2NCgmcHJvZ3Jlc3NfbWVzc2FnZSwgaW5jcik7 Ci0JCXBxX2VuZG1lc3NhZ2UoJnByb2dyZXNzX21lc3NhZ2UpOworCQlwcV9lbmRtZXNzYWdlX3Jl dXNlKCZwcm9ncmVzc19tZXNzYWdlKTsKIAl9CiAJZWxzZQogCQlwZ3N0YXRfcHJvZ3Jlc3NfaW5j cl9wYXJhbShpbmRleCwgaW5jcik7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000060ad6106538a401c--