From 3a0117c850a69b70bf2a39e9f2e61220a1e7f228 Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 24 Apr 2017 18:34:47 +0300 Subject: [PATCH] ci: Do not accidentally kill something unneeded --- ci/common/suite.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ci/common/suite.sh b/ci/common/suite.sh index 75bdb5abfb..986c145736 100644 --- a/ci/common/suite.sh +++ b/ci/common/suite.sh @@ -87,7 +87,8 @@ run_test_wd() { local restarts=5 local prev_tmpsize=-1 while test $restarts -gt 0 ; do - : > "${status_file}" + : > "$status_file" + : > "$sid_file" setsid \ env \ output_file="$output_file" \ @@ -114,8 +115,18 @@ run_test_wd() { done restarts=$(( restarts - 1 )) if test "$(stat -c "%s" "$status_file")" -eq 0 ; then - # status file not updated, assuming hang + # Status file not updated, assuming hang + + # SID not known, this should not ever happen + if test "$(stat -c "%s" "$sid_file")" -eq 0 ; then + fail "$test_name" E "Shell did not run" + break + fi + + # Kill all processes which belong to one session: should get rid of test + # processes as well as sh itself. pkill -KILL -s$(cat "$sid_file") + if test $restarts -eq 0 ; then if test "x$hang_ok" = "x" ; then fail "$test_name" E "Test hang up"