Re: Why our Valgrind reports suck

From: Alexander Lakhin <exclusion(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Richard Guo <guofenglinux(at)gmail(dot)com>
Cc: Andres Freund <andres(at)anarazel(dot)de>, Álvaro Herrera <alvherre(at)kurilemu(dot)de>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Why our Valgrind reports suck
Date: 2026-06-10 20:00:00
Message-ID: b8b40954-e155-41b3-9af8-ad4f261a1b64@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello Tom and Richard,

10.07.2025 21:16, Tom Lane wrote:
> Richard Guo<guofenglinux(at)gmail(dot)com> writes:
>> I'm just skimming through the changes and happened to spot two minor
>> things.
>> In 0008:
>> if (pq_mq_handle != NULL)
>> + {
>> shm_mq_detach(pq_mq_handle);
>> + pfree(pq_mq_handle);
>> + }
>> pq_mq_handle = NULL;
>> Maybe we could move "pq_mq_handle = NULL;" inside the if branch?
>> Though I see we're doing it in your way on master.
> Yeah, we could make it be like that. I was just trying to do the
> minimal change from master.

Could you please look at an issue apparently related to the change shown
above? This simple modification:
--- a/src/backend/storage/ipc/shm_mq.c
+++ b/src/backend/storage/ipc/shm_mq.c
@@ -377,7 +377,7 @@ shm_mq_sendv(shm_mq_handle *mqh, shm_mq_iovec *iov, int iovcnt, bool nowait,
                nbytes += iov[i].len;

        /* Prevent writing messages overwhelming the receiver. */
-       if (nbytes > MaxAllocSize)
+       if (nbytes > 4000)
                ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
                                 errmsg("cannot send a message of size %zu via shared memory queue",

makes the server crash during `make check` as below:
2026-06-10 15:24:41.568 EDT parallel worker[738010] STATEMENT: select (stringu1 || repeat('abcd', 5000))::int2 from
tenk1 where unique1 = 1;
2026-06-10 15:24:41.568 EDT parallel worker[738010] ERROR:  cannot send a message of size 20110 via shared memory queue
2026-06-10 15:24:41.568 EDT parallel worker[738010] STATEMENT: select (stringu1 || repeat('abcd', 5000))::int2 from
tenk1 where unique1 = 1;
2026-06-10 15:24:41.568 EDT parallel worker[738010] ERROR:  detected double pfree in Parallel worker 0xaaaae6a1d670
2026-06-10 15:24:41.622 EDT postmaster[736899] LOG:  background worker "parallel worker" (PID 738010) was terminated by
signal 11: Segmentation fault

(That its, the error message added in 26ec6b594, triggers double pfree and
segfault now.)

Not reproduced at e78d1d6d4~1 with 095555daf added.

Best regards,
Alexander

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2026-06-10 20:23:47 Re: BackgroundPsql swallowing errors on windows
Previous Message Matthias van de Meent 2026-06-10 19:18:16 Re: Commit Sequence Numbers and Visibility