On Sat, Sep 23, 2017 at 11:54:31AM +0200, Martin Ågren wrote: > Unfortunately, I have not figured out how to get LSan to simply report > the leaks and continue. Its default behavior is to abort if there are > leaks. That's useful for finding the first leaking test, but not much > else. (Later tests might depend on that test doing everything it should, > so now those later tests will start failing and/or executing different > code paths.) > > I can tell LeakSanitizer to exit with an exit code instead, but then all > leaking git-processes exit with the same exit code. That also interferes > with the tests. > > What I would like is for the git-process to exit with the same exit > status it would have had without the leak-checking. That would make it > possible to run the whole test suite, collect all leaks, identify > duplicates, sort them, categorize them, prioritize them, track how we > are progressing... Doesn't: LSAN_OPTIONS=abort_on_error=0:exitcode=0 do what you want? I get: $ export LSAN_OPTIONS=abort_on_error=0:exitcode=0 [no leaks, no error] $ ./git rev-parse HEAD; echo $? 0 [no leaks, error] $ ./git rev-parse broken; echo $? ... 128 [leaks, no error] $ ./git --no-pager show; echo $? ... SUMMARY: LeakSanitizer: 40 byte(s) leaked in 4 allocation(s). 0 [leaks, error] $ ./git --no-pager show broken; echo $? ... SUMMARY: LeakSanitizer: 35 byte(s) leaked in 3 allocation(s). 128 In theory you should be able to just add "log_path=/tmp/lsan/output" to that, which should put all the logs in a convenient place (and stop the extra output from confusing any tests which capture stderr). But I can't seem to get log_path to do anything, contrary to the documentation. Doing log_to_syslog=1 does work for me. I'm not sure if it's a bug or I'm holding it wrong. But it does seem like it should be possible to do what you want. -Peff