aboutsummaryrefslogtreecommitdiffstats
path: root/vm/vmimpl/vmimpl.go
diff options
context:
space:
mode:
Diffstat (limited to 'vm/vmimpl/vmimpl.go')
-rw-r--r--vm/vmimpl/vmimpl.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/vm/vmimpl/vmimpl.go b/vm/vmimpl/vmimpl.go
index f54e4e2b5..b1745d192 100644
--- a/vm/vmimpl/vmimpl.go
+++ b/vm/vmimpl/vmimpl.go
@@ -190,6 +190,8 @@ func Multiplex(ctx context.Context, cmd *exec.Cmd, merger *OutputMerger, config
}
}
go func() {
+ errCtx, cancel := context.WithCancel(context.Background())
+ defer cancel()
select {
case <-ctx.Done():
signal(ErrTimeout)
@@ -198,7 +200,7 @@ func Multiplex(ctx context.Context, cmd *exec.Cmd, merger *OutputMerger, config
log.Logf(0, "instance closed")
}
signal(fmt.Errorf("instance closed"))
- case err := <-merger.Err:
+ case err := <-merger.Errors(errCtx):
// EOF is not always in perfect sync with exit, so we should wait a bit.
if cmdErr := waitAndKill(ctx, cmd); cmdErr == nil {
// If the command exited successfully, we got EOF error from merger.