From: Cuong Manh Le Date: Tue, 1 Dec 2020 05:54:24 +0000 (+0700) Subject: cmd/go: fix unbuffered channel passed to signal.Notify X-Git-Tag: go1.16beta1~117 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=10240b9d6b;p=gostls13.git cmd/go: fix unbuffered channel passed to signal.Notify Unbuffered channels passed into signal.Notify can be lost as the docs for signal.Notify caution with: Package signal will not block sending to c: the caller must ensure that c has sufficient buffer space to keep up with the expected signal rate. For a channel used for notification of just one signal value, a buffer of size 1 is sufficient. Found by a static analyzer from Orijtech, Inc. called "sigchanyzer", but it'll be donated to the Go project soon. Updates #9399. Change-Id: Ia0690e447582da028694ed65ace7b97961997b84 Reviewed-on: https://go-review.googlesource.com/c/go/+/274332 Trust: Cuong Manh Le Trust: Emmanuel Odeke Run-TryBot: Cuong Manh Le Reviewed-by: Bryan C. Mills Reviewed-by: Emmanuel Odeke TryBot-Result: Go Bot --- diff --git a/src/cmd/go/internal/base/signal.go b/src/cmd/go/internal/base/signal.go index 54d11876d0..05befcf7f0 100644 --- a/src/cmd/go/internal/base/signal.go +++ b/src/cmd/go/internal/base/signal.go @@ -15,7 +15,7 @@ var Interrupted = make(chan struct{}) // processSignals setups signal handler. func processSignals() { - sig := make(chan os.Signal) + sig := make(chan os.Signal, 1) signal.Notify(sig, signalsToIgnore...) go func() { <-sig