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

