Re: A couple logical decoding fixes/patches - Mailing list pgsql-hackers

From Andres Freund
Subject Re: A couple logical decoding fixes/patches
Date
Msg-id 20140510145651.GA16507@awork2.anarazel.de
Whole thread Raw
In response to Re: A couple logical decoding fixes/patches  (Noah Misch <noah@leadboat.com>)
Responses Re: A couple logical decoding fixes/patches
List pgsql-hackers
On 2014-05-10 00:59:59 -0400, Noah Misch wrote:
> On Fri, May 09, 2014 at 04:58:54PM +0200, Andres Freund wrote:
> > On 2014-05-09 10:49:09 -0400, Robert Haas wrote:
> > > > Patch 03: Add valgrind suppression for writing out padding bytes. That's
> > > > better than zeroing the data from the get go because unitialized
> > > > accesses are still detected.
> > > 
> > > I have no understanding of valgrind suppressions.  I can commit this
> > > blindly if nobody else wants to pick it up.
> > 
> > I think the only committer with previous experience in that area is
> > Noah. Noah?
> 
> I can pick up that patch.

Cool.

> Static functions having only one call site are especially vulnerable to
> inlining, so avoid naming them in the suppressions file.  I do see
> ReorderBufferSerializeChange() inlined away at -O2 and higher.  Is it fair to
> tie the suppression to ReorderBufferSerializeTXN() instead?

Hm. That's a good point. If you're talking about tying it to
ReorderBufferSerializeTXN() you mean to list it below the write, as part
of the callstack?

{padding_reorderbuffer_serializeMemcheck:Paramwrite(buf)
...fun:ReorderBufferSerializeTXN
}

If so, yes, that should be fine. Since there's no other writes it
shouldn't make a difference.

> Do you happen to have a self-contained procedure for causing the server to
> reach the code in question?

(cd contrib/test_decoding && make -s installcheck-force)
against a server running with
valgrind \--quiet --trace-children=yes --leak-check=no --track-origins=yes \--read-var-info=yes run-pg-dev-master -c
logging_collector=on\--suppressions=/home/andres/src/postgresql/src/tools/valgrind.supp       <path/to/postgres> \
-c wal_level=logical -c max_replication_slots=3
 

Does the trick here. Valgrind warns in the first (ddl) test run.

the -force is needed because it needs a server running with -c
wal_level=logical -c max_replication_slots=3.

Note that you'll possibly get a spurious regression test failure because
autovacuum ran inbetween and it's transaction is visible in the test
output like: BEGIN
+ COMMIT
+ BEGIN...

Greetings,

Andres Freund

-- Andres Freund                       http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services



pgsql-hackers by date:

Previous
From: Guillaume Lelarge
Date:
Subject: Re: Weird behaviour with the new MOVE clause of ALTER TABLESPACE
Next
From: Christoph Berg
Date:
Subject: Re: Supporting tcl 8.6