From c8b92f606704dee2443a045a6782dbe75bba3f2a Mon Sep 17 00:00:00 2001 From: jiuker <2818723467@qq.com> Date: Thu, 27 Apr 2023 22:55:36 +0800 Subject: [PATCH] protect wg.Done from being called twice (#17075) --- internal/ioutil/wait_pipe.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/ioutil/wait_pipe.go b/internal/ioutil/wait_pipe.go index 124cde78f..67f490ba4 100644 --- a/internal/ioutil/wait_pipe.go +++ b/internal/ioutil/wait_pipe.go @@ -25,13 +25,16 @@ import ( // PipeWriter is similar to io.PipeWriter with wait group type PipeWriter struct { *io.PipeWriter + once sync.Once done func() } // CloseWithError close with supplied error the writer end. func (w *PipeWriter) CloseWithError(err error) error { err = w.PipeWriter.CloseWithError(err) - w.done() + w.once.Do(func() { + w.done() + }) return err }