Merge bitcoin/bitcoin#24574: test: Actually print TSan tracebacks

fa76d8d4d7 test: Actually print TSan tracebacks (MarcoFalke)

Pull request description:

  Commit 5e5138a721 made the TSan logs to be printed before returning an error from the ci script.

  However, it seems that on Cirrus CI, the `--failfast` option will kill not only all python process and bitcoind child process, but also the parent CI bash script, rendering the `trap` inefficient. I believe this bug was introduced in commit 451b96f7d2.

ACKs for top commit:
  fanquake:
    utACK fa76d8d4d7

Tree-SHA512: 686f889d38a343882cb62ad6e0c2080196330e7cc7086891a7ff66d9443b455c82ba8d7e4a5cc42daa0513b0ad2743055bfe90e2f6ac88a910ee3b663fabddcd
pull/24641/head
fanquake 3 years ago
commit 26d98d51f2
No known key found for this signature in database
GPG Key ID: 2EEB9F5CC09526C1

@ -2,6 +2,7 @@ env: # Global defaults
PACKAGE_MANAGER_INSTALL: "apt-get update && apt-get install -y" PACKAGE_MANAGER_INSTALL: "apt-get update && apt-get install -y"
MAKEJOBS: "-j10" MAKEJOBS: "-j10"
TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache
CI_FAILFAST_TEST_LEAVE_DANGLING: "1" # Cirrus CI does not care about dangling process and setting this variable avoids killing the CI script itself on error
CCACHE_SIZE: "200M" CCACHE_SIZE: "200M"
CCACHE_DIR: "/tmp/ccache_dir" CCACHE_DIR: "/tmp/ccache_dir"
CCACHE_NOHASHDIR: "1" # Debug info might contain a stale path if the build dir changes, but this is fine CCACHE_NOHASHDIR: "1" # Debug info might contain a stale path if the build dir changes, but this is fine

@ -586,11 +586,12 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
# Clean up dangling processes if any. This may only happen with --failfast option. # Clean up dangling processes if any. This may only happen with --failfast option.
# Killing the process group will also terminate the current process but that is # Killing the process group will also terminate the current process but that is
# not an issue # not an issue
if len(job_queue.jobs): if not os.getenv("CI_FAILFAST_TEST_LEAVE_DANGLING") and len(job_queue.jobs):
os.killpg(os.getpgid(0), signal.SIGKILL) os.killpg(os.getpgid(0), signal.SIGKILL)
sys.exit(not all_passed) sys.exit(not all_passed)
def print_results(test_results, max_len_name, runtime): def print_results(test_results, max_len_name, runtime):
results = "\n" + BOLD[1] + "%s | %s | %s\n\n" % ("TEST".ljust(max_len_name), "STATUS ", "DURATION") + BOLD[0] results = "\n" + BOLD[1] + "%s | %s | %s\n\n" % ("TEST".ljust(max_len_name), "STATUS ", "DURATION") + BOLD[0]

Loading…
Cancel
Save