diff options
author | Valentin Rothberg <rothberg@redhat.com> | 2021-08-17 12:10:20 +0200 |
---|---|---|
committer | Valentin Rothberg <rothberg@redhat.com> | 2021-08-17 12:10:20 +0200 |
commit | fe2be7f886ac3be68a1899eeb63f756d6fe3d744 (patch) | |
tree | 6b43476231046f0f57a63ed2822f0bbe9a499f74 /pkg/domain/infra/abi/terminal | |
parent | 8c228bdbd031e5930e6319e8fe25b3ff340919f3 (diff) | |
download | podman-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/abi/terminal')
-rw-r--r-- | pkg/domain/infra/abi/terminal/sigproxy_linux.go | 6 |
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") |