From: Ian Lance Taylor Date: Mon, 3 Aug 2015 18:23:42 +0000 (+0000) Subject: libgo/testsuite: kill sleep process in gotest X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ca81dee3922cf1cfd64abb75db737aa8b7b3caa8;p=gcc.git 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 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 2632f4e6724..5490d9f7fa9 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -d5aad2f400a0f21724e33e4ae48e1583ed8b1a87 +33d59eff1bd5de29f1fbde3b7625db28595835fd The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/testsuite/gotest b/libgo/testsuite/gotest index 3596d727ff1..7d5e99f4987 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