Re: Why our Valgrind reports suck
Tom Lane <tgl@sss.pgh.pa.us>
Attachments
- v1-0001-Improve-our-support-for-Valgrind-s-leak-tracking.patch (text/x-diff) patch v1-0001
- v1-0002-Temporarily-suppress-some-Valgrind-complaints.patch (text/x-diff) patch v1-0002
- v1-0003-Silence-complaints-about-leaked-dynahash-storage.patch (text/x-diff) patch v1-0003
- v1-0004-Silence-complaints-about-leaked-catcache-entries.patch (text/x-diff) patch v1-0004
- v1-0005-Silence-complaints-about-leaked-CatCache-structs.patch (text/x-diff) patch v1-0005
- v1-0006-Silence-complaints-about-save_ps_display_args.patch (text/x-diff) patch v1-0006
- v1-0007-Don-t-leak-the-startup-packet-buffer-in-ProcessSt.patch (text/x-diff) patch v1-0007
- v1-0008-Fix-some-extremely-broken-code-from-525392d57.patch (text/x-diff) patch v1-0008
- v1-0009-Avoid-per-relation-leakage-in-autovacuum.patch (text/x-diff) patch v1-0009
- v1-0010-Silence-complaints-about-leaks-in-load_domaintype.patch (text/x-diff) patch v1-0010
- v1-0011-WIP-reduce-leakages-during-PL-pgSQL-function-comp.patch (text/x-diff) patch v1-0011
I wrote: > And, since there's nothing new under the sun around here, > we already had a discussion about that back in 2021: > https://www.postgresql.org/message-id/flat/3471359.1615937770%40sss.pgh.pa.us > That thread seems to have led to fixing some specific bugs, > but we never committed any of the discussed valgrind infrastructure > improvements. I'll have a go at resurrecting that... Okay, here is a patch series that updates the 0001-Make-memory-contexts-themselves-more-visible-to-valg.patch patch you posted in that thread, and makes various follow-up fixes that either fix or paper over various leaks. Some of it is committable I think, but other parts are just WIP. Anyway, as of the 0010 patch we can run through the core regression tests and see no more than a couple of kilobytes total reported leakage in any process, except for two tests that expose leaks in TS dictionary building. (That's fixable but I ran out of time, and I wanted to get this posted before Montreal.) There is work left to do before we can remove the suppressions added in 0002, but this is already huge progress compared to where we were. A couple of these patches are bug fixes that need to be applied and even back-patched. In particular, I had not realized that autovacuum leaks a nontrivial amount of memory per relation processed (cf 0009), and apparently has done for a few releases now. This is horrid in databases with many tables, and I'm surprised that we've not gotten complaints about it. regards, tom lane
Commits
-
Undo thinko in commit e78d1d6d4.
- 9d141466ff08 19 (unreleased) landed
-
Avoid leakage of zero-length arrays in partition_bounds_copy().
- 4fbfdde58e4c 19 (unreleased) landed
-
Fix MemoryContextAllocAligned's interaction with Valgrind.
- 9e9190154ef2 19 (unreleased) landed
-
Fix assorted pretty-trivial memory leaks in the backend.
- e78d1d6d47dc 19 (unreleased) landed
-
Improve our support for Valgrind's leak tracking.
- bb049a79d344 19 (unreleased) landed
-
Reduce leakage during PL/pgSQL function compilation.
- 9f18fa999562 19 (unreleased) landed
-
Silence Valgrind leakage complaints in more-or-less-hackish ways.
- db01c90b2f02 19 (unreleased) landed
-
Silence complaints about leaks in PlanCacheComputeResultDesc.
- b102c8c4733c 19 (unreleased) landed
-
Suppress complaints about leaks in TS dictionary loading.
- 7f6ededa764b 19 (unreleased) landed
-
Suppress complaints about leaks in function cache loading.
- 2c7b4ad24dda 19 (unreleased) landed
-
Fix per-relation memory leakage in autovacuum.
- e087b5b79452 16.10 landed
- 13d21b48a3a4 15.14 landed
- cd3064f9898c 17.6 landed
- 02502c1bca54 18.0 landed
-
Fix AlignedAllocRealloc to cope sanely with OOM.
- ac3afd1d0079 17.6 landed
- 6aa33afe6da1 18.0 landed