Re: Why our Valgrind reports suck - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Why our Valgrind reports suck
Date
Msg-id 1421978.1781124089@sss.pgh.pa.us
Whole thread
Responses Re: Why our Valgrind reports suck
List pgsql-hackers
Alexander Lakhin <exclusion@gmail.com> writes:
> Could you please look at an issue apparently related to the change shown
> above? This simple modification:
> ...
> (That its, the error message added in 26ec6b594, triggers double pfree and
> segfault now.)

Hah, nice one.  Apparently the "detach the queue" path in 
mq_putmessage() has never ever been tested, because it
contains a double pfree, and this fixes it:

diff --git a/src/backend/libpq/pqmq.c b/src/backend/libpq/pqmq.c
index 21ce180c78d..d038a9da515 100644
--- a/src/backend/libpq/pqmq.c
+++ b/src/backend/libpq/pqmq.c
@@ -140,7 +140,6 @@ mq_putmessage(char msgtype, const char *s, size_t len)
         if (pq_mq_handle != NULL)
         {
             shm_mq_detach(pq_mq_handle);
-            pfree(pq_mq_handle);
             pq_mq_handle = NULL;
         }
         return EOF;

The necessity of this can be observed by noting that the last
step in shm_mq_detach() is to pfree the pointer it was handed.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Heads Up: cirrus-ci is shutting down June 1st
Next
From: Zsolt Parragi
Date:
Subject: Re: [PATCH] Add pg_get_table_ddl() to reconstruct CREATE TABLE statements