From 96b2c9ecfbd1ebaae8353c1131e6ed8a0c3de65b Mon Sep 17 00:00:00 2001 From: chenjiankun Date: Fri, 21 Jun 2024 16:39:55 +0800 Subject: [PATCH] docker: Ignore SIGURG on Linux In go1.14+, SIGURG is used by the runtime to handle preemtable system calls. In practice this signal caught *frequently*. For reference: https://go.googlesource.com/proposal/+/master/design/24543-non-cooperative-preemption.md golang/go#37942 https://github.com/docker/cli/commit/fff164c22e8dc904291fecb62307312fd4ca153e --- components/cli/cli/command/container/tty.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/cli/cli/command/container/tty.go b/components/cli/cli/command/container/tty.go index cb49ded8e..5a914b109 100644 --- a/components/cli/cli/command/container/tty.go +++ b/components/cli/cli/command/container/tty.go @@ -13,6 +13,7 @@ import ( "github.com/docker/docker/client" "github.com/docker/docker/pkg/signal" "github.com/sirupsen/logrus" + "golang.org/x/sys/unix" ) // resizeTtyTo resizes tty to specific height and width @@ -79,7 +80,7 @@ func ForwardAllSignals(ctx context.Context, cli command.Cli, cid string) chan os signal.CatchAll(sigc) go func() { for s := range sigc { - if s == signal.SIGCHLD || s == signal.SIGPIPE { + if s == signal.SIGCHLD || s == signal.SIGPIPE || s == unix.SIGURG { continue } var sig string -- 2.33.0