]> git.99rst.org Git - git.git/commit
t: move LSan errors from stdout to stderr
authorJeff King <redacted>
Tue, 30 Jun 2026 06:41:59 +0000 (02:41 -0400)
committerJunio C Hamano <redacted>
Tue, 30 Jun 2026 18:23:59 +0000 (11:23 -0700)
commitcb77d1f30882b2662dc097c802af95e721604ae0
treec1101d06b82091b75d1d791e818044a089075367
parent94f057755b7941b321fd11fec1b2e3ca5313a4e0
t: move LSan errors from stdout to stderr

When we find LSan errors, we dump them via "say_color", which goes to
stdout. This is mostly harmless, since stdout and stderr tend to go to
the same place (either the user's terminal, or to the ".out" file with
--verbose-log).

But when running under a TAP harness like prove, they are split and
stdout is interpreted as TAP output. Historically even this was fine, as
the extra lines on stdout would be ignored. But since 389c83025d (t: let
prove fail when parsing invalid TAP output, 2026-06-04) we instruct the
TAP reader to complain, and a leaking test will result in complaints
like this (this is a real leak which we have yet to fix):

  $ GIT_TEST_COMMIT_GRAPH=1 make SANITIZE=leak test
  [...]
  Test Summary Report
  -------------------
  t4014-format-patch.sh (Wstat: 256 (exited 1) Tests: 226 Failed: 30)
    Failed tests:  197-226
    Non-zero exit status: 1
    Parse errors: Unknown TAP token: ""
                  Unknown TAP token: "================================================================="
                  Unknown TAP token: "==git==3693658==ERROR: LeakSanitizer: detected memory leaks"
                  Unknown TAP token: ""
                  Unknown TAP token: "Direct leak of 200 byte(s) in 1 object(s) allocated from:"
  Displayed the first 5 of 1531 TAP syntax errors.
  Re-run prove with the -p option to see them all.

You still see the failing tests, so it's mostly just an annoyance. We
can fix it by redirecting to stderr (actually descriptor 4, which is our
verbose-respecting variant). I confirmed manually that the output still
appears with --verbose-log, and even with a single-test "-i
--verbose-only=197" going to the terminal.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
t/test-lib.sh
git clone https://git.99rst.org/PROJECT