Subject: Protecting allocator headers with Valgrind

From: David Rowley <[email-masked]>
Date: Wed, 12 Apr 2023 01:28:08 +1200

Over on [1], Tom mentioned that we might want to rethink the decision
to not protect chunk headers with Valgrind.  That thread fixed a bug
that was accessing array element -1, which effectively was reading the
MemoryChunk at the start of the allocated chunk as an array element.

I wrote a patch to adjust the Valgrind macros to mark the MemoryChunks
as NOACCESS and that finds the bug reported on that thread (with the
fix for it reverted).

I didn't quite get a clear run at committing the changes during the
v16 cycle, but wondering since they're really just Valgrind macro
changes if anyone would object to doing it now?

I know there are a few people out there running sqlsmith and/or
sqlancer under Valgrind. It would be good to have this in so we could
address any new issues the attached patch might help them highlight.

Any objections?

(Copying in Tom and Richard same as original thread.  Reposting for
more visibility of this change)

David

---

From: Richard Guo <[email-masked]>
Date: Wed, 12 Apr 2023 09:59:22 +0800

> MemoryChunk at the start of the allocated chunk as an array element.

Seems the link to the original thread is not pasted.  Here it is.

[1] https://www.postgresql.org/message-id/1650235.1672694719%40sss.pgh.pa.us

Thanks
Richard