Skip to content

Commit 5fa0c4d

Browse files
peffgitster
authored andcommitted
test-lib: rely on logs to detect leaks
When we run with sanitizers, we set abort_on_error=1 so that the tests themselves can detect problems directly (when the buggy program exits with SIGABRT). This has one blind spot, though: we don't always check the exit codes for all programs (e.g., helpers like upload-pack invoked behind the scenes). For ASan and UBSan this is mostly fine; they exit as soon as they see an error, so the unexpected abort of the program causes the test to fail anyway. But for LSan, the program runs to completion, since we can only check for leaks at the end. And in that case we could miss leak reports. And thus we started checking LSan logs in faececa (test-lib: have the "check" mode for SANITIZE=leak consider leak logs, 2022-07-28). Originally the logs were optional, but logs are generated (and checked) always as of 8c1d669 (test-lib: GIT_TEST_SANITIZE_LEAK_LOG enabled by default, 2024-07-11). And we even check them for each test snippet, as of cf14643 (test-lib: check for leak logs after every test, 2024-09-24). So now aborting on error is superfluous for LSan! We can get everything we need by checking the logs. And checking the logs is actually preferable, since it gives us more control over silencing false positives (something we do not yet do, but will soon). So let's tell LSan to just exit normally, even if it finds leaks. We can do so with exitcode=0, which also suppresses the abort_on_error flag. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent fc89d14 commit 5fa0c4d

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

t/test-lib.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ prepend_var ASAN_OPTIONS : detect_leaks=0
8080
export ASAN_OPTIONS
8181

8282
prepend_var LSAN_OPTIONS : $GIT_SAN_OPTIONS
83+
prepend_var LSAN_OPTIONS : exitcode=0
8384
prepend_var LSAN_OPTIONS : fast_unwind_on_malloc=0
8485
export LSAN_OPTIONS
8586

0 commit comments

Comments
 (0)