diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-08-03 18:23:42 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-08-03 18:23:42 +0000 |
commit | ca81dee3922cf1cfd64abb75db737aa8b7b3caa8 (patch) | |
tree | 217bdda7b9a43a3b92b3abcc8ca2c7ac3dc08c17 /libgo | |
parent | 3d6d2a63b2457450d93cfaa9787a27359264b2c3 (diff) | |
download | gcc-ca81dee3922cf1cfd64abb75db737aa8b7b3caa8.zip gcc-ca81dee3922cf1cfd64abb75db737aa8b7b3caa8.tar.gz gcc-ca81dee3922cf1cfd64abb75db737aa8b7b3caa8.tar.bz2 |
libgo/testsuite: kill sleep process in gotest
This change modifies the "gotest" shell script
to kill all processes, including "sleep", spawned
by the timeout subshell. This prevents the sleep
process from living beyond the gotest process.
BACKGROUND
The "gotest" shell script spawns "sleep" processes
in the background to kill off test cases that run
past their specified timeout. There are commands
included that appear to kill the sleep process,
but they only kill the parent shell, causing the
sleep process to reparent.
The orphaned sleep process can cause issues when
gotest is run under some build systems, such as
Ninja [0]. The particular issue with Ninja is the
method it uses to identify terminated processes:
it creates a pipe, passes the write end to the
child process, and waits for EOF. In the case of
libgo/gotest, the orphaned sleep process inherits
the pipe FD and keeps it open for 4 minutes by
default.
[0] https://github.com/martine/ninja
Reviewed-on: https://go-review.googlesource.com/12227
From-SVN: r226526
Diffstat (limited to 'libgo')
-rwxr-xr-x | libgo/testsuite/gotest | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libgo/testsuite/gotest b/libgo/testsuite/gotest index 3596d72..7d5e99f 100755 --- a/libgo/testsuite/gotest +++ b/libgo/testsuite/gotest @@ -518,7 +518,7 @@ xno) wait $pid status=$? if ! test -f gotest-timeout; then - kill $alarmpid + ps -o pid,ppid | grep " $alarmpid" | cut -f1 -d" " | xargs kill -9 fi else if test "$trace" = "true"; then |