From 211cde11d40b6d5b07da4c9a71801d40824068af Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 5 Feb 2021 19:14:06 +0100 Subject: [PATCH] Rerun the test if LeakSanitizer crashed while running it This crash (see https://github.com/google/sanitizers/issues/1353) happens sporadically but regularly enough to be annoying, so try to work around it by rerunning the test and hope that it doesn't happen twice in a row. --- .github/workflows/ci.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d94756073a..0bb197a527 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -182,8 +182,19 @@ jobs: if: matrix.skip_testing != true working-directory: tests run: | - ./test || rc=$? - if [ -n "$rc" ]; then + # Explicitly use bash because /bin/sh doesn't have pipefail option + /bin/bash -o pipefail -c './test 2>&1 | tee test.out' + rc=$? + if [ ${{ matrix.use_asan }} ]; then + # Work around spurious crashes by running the test again. + # See https://github.com/google/sanitizers/issues/1353 + if fgrep -q 'LeakSanitizer has encountered a fatal error' test.out; then + echo '+++ Rerunning the tests once again after LeakSanitizer crash +++' + ./test + rc=$? + fi + fi + if [ "$rc" != 0 ]; then echo '*** Tests failed, contents of httpbin.log follows: ***' echo '-----------------------------------------------------------' cat httpbin.log