diff --git a/internal/pkg/exec.go b/internal/pkg/exec.go index 9169980d..d0d0b366 100644 --- a/internal/pkg/exec.go +++ b/internal/pkg/exec.go @@ -631,12 +631,6 @@ func (a *execArtifact) cure(f *FContext, hostNet bool) (err error) { _ = stdout.Close() return } - defer func() { - if err != nil && !errors.As(err, new(*exec.ExitError)) { - _ = stdout.Close() - _ = stderr.Close() - } - }() brStdout, brStderr := f.cache.getReader(stdout), f.cache.getReader(stderr) stdoutDone, stderrDone := make(chan struct{}), make(chan struct{}) @@ -651,6 +645,11 @@ func (a *execArtifact) cure(f *FContext, hostNet bool) (err error) { io.TeeReader(brStderr, status), ) defer func() { + if err != nil && !errors.As(err, new(*exec.ExitError)) { + _ = stdout.Close() + _ = stderr.Close() + } + <-stdoutDone <-stderrDone f.cache.putReader(brStdout)