It seems under --stress it is fairly easy to break the said test, especially the one near the end test_expect_success TTY 'git returns SIGPIPE on propagated signals from pager' ' test_when_finished "rm pager-used trace.normal" && test_config core.pager ">pager-used; test-tool sigchain" && GIT_TRACE2="$(pwd)/trace.normal" && export GIT_TRACE2 && test_when_finished "unset GIT_TRACE2" && if test_have_prereq !MINGW then OUT=$( ((test_terminal git log; echo $? 1>&3) | :) 3>&1 ) && test_match_signal 13 "$OUT" else test_terminal git log fi && grep child_exit trace.normal >child-exits && test_line_count = 1 child-exits && grep " code:143 " child-exits && test_path_is_file pager-used ' When it fails the code in child-exits is actually -1 not 143, a propagated pipe. What makes us expect that the "git log" invocation should trigger a SIGPIPE in the first place? test-sigchain emitting a few lines and exiting without ever reading from its standard input? Will it reliably die soon enough before, or linger around until, we attempt to write to the pager? If it does not die quickly enough, can we attempt to write, successfully fill the buffer between us and the pager, and wait to notice that test-sigchain exiting with non-zero, or something?