On Tue, Sep 24, 2024 at 05:35:40PM -0400, Jeff King wrote: > We ask LSan to record the logs of all leaks in test-results/, which is > useful for finding leaks that didn't trigger a test failure. > > We don't clean out the leak/ directory for each test before running it, > though. Instead, we count the number of files it has, and complain only > if we ended up with more when the script finishes. So we shouldn't > trigger any output if you've made a script leak free. But if you simply > _reduced_ the number of leaks, then there is an annoying outcome: we do > not record which logs were from this run and which were from previous > ones. So when we dump them to stdout, you get a mess of > possibly-outdated leaks. This is very confusing when you are in an > edit-compile-test cycle trying to fix leaks. > > The instructions do note that you should "rm -rf test-results/" if you > want to avoid this. But I'm having trouble seeing how this cumulative > count could ever be useful. It is not even counting the number of leaks, > but rather the number of processes with at least one leak! > > So let's just blow away the per-test leak/ directory before running. We > already overwrite the ".out" file in test-results/ in the same way, so > this is following that pattern. > > Running "make test" isn't affected by this, since it blows away all of > test-results/ already. This only comes up when you are iterating on a > single script that you're running manually. I'm very much in favor of this change. I frequently re-ran tests with leak checking enabled only to realize that, oops, I forgot to "rm -rf" the leak directory first. So eventually I ended up with the following command: $ rm -rf /tmp/git-tests/ && make -C .. -j20 SANITIZE=leak && ./t5310-pack-bitmaps.sh -ix Every time I didn't use it I soon came to regret it. Patrick