summaryrefslogtreecommitdiff
path: root/pkg/domain/infra
diff options
context:
space:
mode:
authorValentin Rothberg <rothberg@redhat.com>2021-08-17 12:10:20 +0200
committerValentin Rothberg <rothberg@redhat.com>2021-08-17 12:10:20 +0200
commitfe2be7f886ac3be68a1899eeb63f756d6fe3d744 (patch)
tree6b43476231046f0f57a63ed2822f0bbe9a499f74 /pkg/domain/infra
parent8c228bdbd031e5930e6319e8fe25b3ff340919f3 (diff)
downloadpodman-fe2be7f886ac3be68a1899eeb63f756d6fe3d744.tar.gz
podman-fe2be7f886ac3be68a1899eeb63f756d6fe3d744.tar.bz2
podman-fe2be7f886ac3be68a1899eeb63f756d6fe3d744.zip
make sure that signal buffers are sufficiently big
Dealing with os.Signal channels seems more like an art than science since signals may get lost. os.Notify doesn't block on an unbuffered channel, so users are expected to know what they're doing or hope for the best. In the recent past, I've seen a number of flakes and BZs on non-amd64 architectures where I was under the impression that signals may got lost, for instance, during stop and exec. [NO TESTS NEEDED] since this is art. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'pkg/domain/infra')
-rw-r--r--pkg/domain/infra/abi/terminal/sigproxy_linux.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/pkg/domain/infra/abi/terminal/sigproxy_linux.go b/pkg/domain/infra/abi/terminal/sigproxy_linux.go
index 26e199aee..a9bd2d5fb 100644
--- a/pkg/domain/infra/abi/terminal/sigproxy_linux.go
+++ b/pkg/domain/infra/abi/terminal/sigproxy_linux.go
@@ -12,13 +12,17 @@ import (
"github.com/sirupsen/logrus"
)
+// Make sure the signal buffer is sufficiently big.
+// runc is using the same value.
+const signalBufferSize = 2048
+
// ProxySignals ...
func ProxySignals(ctr *libpod.Container) {
// Stop catching the shutdown signals (SIGINT, SIGTERM) - they're going
// to the container now.
shutdown.Stop()
- sigBuffer := make(chan os.Signal, 128)
+ sigBuffer := make(chan os.Signal, signalBufferSize)
signal.CatchAll(sigBuffer)
logrus.Debugf("Enabling signal proxying")