1
0
mirror of https://github.com/golang/go synced 2024-11-26 08:38:01 -07:00

misc/ios: always kill lldb process when it hangs

The lldb child process is killed if a test runs too long. Also
kill it when the setup times out (and is retried).

Might help with builder flakes where all 5 attempts to start up
lldb fail even though the tests before and after the timeouts
succeed. For example:

...
ok  	vendor/golang_org/x/net/route	37.797s
lldb setup error: command timeout (lldb start for 17s)
start timeout, trying again
lldb setup error: command timeout (lldb start for 17s)
start timeout, trying again
lldb setup error: command timeout (lldb start for 17s)
start timeout, trying again
lldb setup error: command timeout (lldb start for 17s)
start timeout, trying again
lldb setup error: command timeout (lldb start for 17s)
go_darwin_arm_exec: failed to start test harness (retry attempted)
FAIL	vendor/golang_org/x/text/transform	115.185s
ok  	vendor/golang_org/x/text/unicode/norm	122.773s
...

Change-Id: I6638860522896491dccfa12f1e520c0f23df6d66
Reviewed-on: https://go-review.googlesource.com/67791
Run-TryBot: Elias Naur <elias.naur@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Elias Naur 2017-10-03 13:05:22 +02:00
parent 6b4008db8b
commit eb5bf55496

View File

@ -385,6 +385,9 @@ func (s *lldbSession) wait(reason string, cond func(out *buf) bool, extraTimeout
} }
return fmt.Errorf("test timeout (%s)", reason) return fmt.Errorf("test timeout (%s)", reason)
case <-doTimedout: case <-doTimedout:
if p := s.cmd.Process; p != nil {
p.Kill()
}
return fmt.Errorf("command timeout (%s for %v)", reason, doTimeout) return fmt.Errorf("command timeout (%s for %v)", reason, doTimeout)
case err := <-s.exited: case err := <-s.exited:
return fmt.Errorf("exited (%s: %v)", reason, err) return fmt.Errorf("exited (%s: %v)", reason, err)