aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vm/gvisor/gvisor.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/vm/gvisor/gvisor.go b/vm/gvisor/gvisor.go
index 4365c22f9..31e3a10d5 100644
--- a/vm/gvisor/gvisor.go
+++ b/vm/gvisor/gvisor.go
@@ -316,8 +316,20 @@ func (inst *instance) Run(timeout time.Duration, stop <-chan bool, command strin
signal(err)
return
}
- cmd.Process.Kill()
- cmd.Wait()
+ log.Logf(1, "stopping %s", inst.name)
+ w := make(chan bool)
+ go func() {
+ select {
+ case <-w:
+ return
+ case <-time.After(time.Minute):
+ cmd.Process.Kill()
+ }
+ }()
+ osutil.Run(time.Minute, inst.runscCmd("kill", inst.name, "9"))
+ err := cmd.Wait()
+ close(w)
+ log.Logf(1, "%s exited with %s", inst.name, err)
}()
return inst.merger.Output, errc, nil
}