From e51b9d411a859072e6a3f8b2f77e32e0f47d409a Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Fri, 2 Feb 2018 17:47:13 -0800 Subject: [PATCH] Add logtape.c Valgrind suppression. LogicalTapeFreeze() may write out its first block when it is dirty but not full, and then immediately read the first block back in from its BufFile as a BLCKSZ-width block. This can only occur in rare cases where next to no tuples were written out, which is only possible with parallel external tuplesorts. While this is pointless, it's also harmless. However, this issue causes Valgrind to complain about a write() of uninitialized bytes, so a suppression is needed. This is because BufFile block reading will flush out its whole dirty stdio-style temp buffer, writing bytes that include values originating from poisoned/uninitialized logtape.c buffer bytes. Author: Peter Geoghegan --- src/tools/valgrind.supp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/tools/valgrind.supp b/src/tools/valgrind.supp index af03051..22039c0 100644 --- a/src/tools/valgrind.supp +++ b/src/tools/valgrind.supp @@ -112,6 +112,16 @@ fun:BootStrapXLOG } +# LogicalTapeFreeze() needs this for calls from parallel worker with few tuples +{ + padding_buffile_dump_buffer + Memcheck:Param + write(buf) + + ... + fun:LogicalTapeFreeze +} + { bootstrap_write_relmap_overlap Memcheck:Overlap -- 2.7.4