docker/patch/0276-docker-Ignore-SIGURG-on-Linux.patch

43 lines
1.4 KiB
Diff
Raw Normal View History

From 96b2c9ecfbd1ebaae8353c1131e6ed8a0c3de65b Mon Sep 17 00:00:00 2001
From: chenjiankun <chenjiankun1@huawei.com>
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