diff options
| -rw-r--r-- | vm/gvisor/gvisor.go | 16 |
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 } |
