Control characters within container shells are not respected
Description
I think this is a similar problem to https://github.com/google/gvisor/issues/90. I am running SSH in a container and when a user within the shell environment makes a control signals like ^C it is not respected / does not work. These control characters work as expected in runc.
Expected Behaviour
Ctrl+C / ^C within a shell environment running on a container should be respected and send a SIGINT to the running binary.
Observed Behaviour
The connecting terminal's bell rings and gVisor does not respect the ^C. The following log snippet was captured after performing a ^C within an SSH session while monitoring the logs with grep -E 'sshd|bash' *boot.
11:30:32.029941 5866 strace.go:627] [ 8] sshd X select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [], null, null) = 0x1 (32.957520627s)
11:30:32.030344 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8, 0x8)
11:30:32.030408 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8 [], 0x8) = 0x0 (4.679µs)
11:30:32.030817 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], 0x0, 0x8)
11:30:32.030864 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], null, 0x8) = 0x0 (4.073µs)
11:30:32.031316 5866 strace.go:583] [ 8] sshd E read(0x4 socket:[5], 0x7fd9416917d8, 0x4000)
11:30:32.031533 5866 strace.go:621] [ 8] sshd X read(0x4 socket:[5], 0x7fd9416917d8 "6+Ӻ\xf3\x01\xff\x16\xac\xe7\xe7\xa0\x16\x96y\x9b\xab\xbf<\xaf\xf6\xd3\xd5;^\xda\x1cUf\xf0[\x81Z\x9a/\x96", 0x4000) = 0x24 (21.43µs)
11:30:32.033265 5866 strace.go:589] [ 8] sshd E select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [8], null, null)
11:30:32.033314 5866 strace.go:627] [ 8] sshd X select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [8], null, null) = 0x1 (14.643µs)
11:30:32.033510 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8, 0x8)
11:30:32.033537 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8 [], 0x8) = 0x0 (3.003µs)
11:30:32.033813 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], 0x0, 0x8)
11:30:32.033842 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], null, 0x8) = 0x0 (2.041µs)
11:30:32.034112 5866 strace.go:583] [ 8] sshd E write(0x8 /dev/pts/ptmx, 0x558cb94c1a20 "\x03", 0x1)
11:30:32.034162 5866 strace.go:621] [ 8] sshd X write(0x8 /dev/pts/ptmx, ..., 0x1) = 0x1 (21.438µs)
11:30:32.034368 5866 strace.go:630] [ 9] bash X pselect6(0x1, 0x7f8cfc4a9aa8 [0], null, null, null, 0x7f8cfc4a9a70 [SIGKILL SIGUSR2 SIGPIPE SIGTERM SIGSTKFLT SIGCONT SIGTTIN SIGXCPU SIGXFSZ SIGPROF SIGIO 33 34 39 40 41 42 43 44 45 46 47]) = 0x1 (32.963779975s)
11:30:32.034466 5866 strace.go:583] [ 8] sshd E ioctl(0x8 /dev/pts/ptmx, 0x5401, 0x7fd94169570c)
11:30:32.034498 5866 strace.go:621] [ 8] sshd X ioctl(0x8 /dev/pts/ptmx, 0x5401, 0x7fd94169570c) = 0x0 (5.185µs)
11:30:32.034783 5866 strace.go:589] [ 8] sshd E select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [], null, null)
11:30:32.035306 5866 strace.go:583] [ 9] bash E read(0x0 /dev/pts/0, 0x7f8cfc4a9aa7, 0x1)
11:30:32.035344 5866 strace.go:621] [ 9] bash X read(0x0 /dev/pts/0, 0x7f8cfc4a9aa7 "\x03", 0x1) = 0x1 (7.161µs)
11:30:32.035558 5866 strace.go:583] [ 9] bash E writev(0x2 /dev/pts/0, 0x7f8cfc4a9a90 {base=0x7fc3159c60a8, len=0}, {base=0x7f8cfc4a9aff, len=1, "\a"}, 0x2)
11:30:32.035700 5866 strace.go:621] [ 9] bash X writev(0x2 /dev/pts/0, ..., 0x2) = 0x1 (64.578µs)
11:30:32.035797 5866 strace.go:627] [ 8] sshd X select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [], null, null) = 0x1 (982.529µs)
11:30:32.035912 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8, 0x8)
11:30:32.035936 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8 [], 0x8) = 0x0 (2.342µs)
11:30:32.035968 5866 strace.go:592] [ 9] bash E pselect6(0x1, 0x7f8cfc4a9aa8 [0], null, null, null, 0x7f8cfc4a9a70 [SIGKILL SIGUSR2 SIGPIPE SIGTERM SIGSTKFLT SIGCONT SIGTTIN SIGXCPU SIGXFSZ SIGPROF SIGIO 33 34 39 40 41 42 43 44 45 46 47])
11:30:32.036169 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], 0x0, 0x8)
11:30:32.036193 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], null, 0x8) = 0x0 (1.794µs)
11:30:32.036356 5866 strace.go:583] [ 8] sshd E read(0xa /dev/pts/ptmx, 0x7fd9416916a8, 0x4000)
11:30:32.036386 5866 strace.go:621] [ 8] sshd X read(0xa /dev/pts/ptmx, 0x7fd9416916a8 "\a", 0x4000) = 0x1 (5.835µs)
11:30:32.036581 5866 strace.go:575] [ 8] sshd E getpid()
11:30:32.036609 5866 strace.go:612] [ 8] sshd X getpid() = 0x8 (1.831µs)
11:30:32.036812 5866 strace.go:589] [ 8] sshd E select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [4], null, null)
11:30:32.036860 5866 strace.go:627] [ 8] sshd X select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [4], null, null) = 0x1 (8.044µs)
11:30:32.037040 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8, 0x8)
11:30:32.037068 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_BLOCK, 0x7fd941695758 [SIGCHLD], 0x7fd9416956d8 [], 0x8) = 0x0 (2.228µs)
11:30:32.037257 5866 strace.go:586] [ 8] sshd E rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], 0x0, 0x8)
11:30:32.037298 5866 strace.go:624] [ 8] sshd X rt_sigprocmask(SIG_SETMASK, 0x7fd9416956d8 [], null, 0x8) = 0x0 (2.247µs)
11:30:32.037485 5866 strace.go:583] [ 8] sshd E write(0x4 socket:[5], 0x558cb94d2100 "\"\xe0\xea*\x0fЫ\xac\x9d\xb3\t\xe4\xee \xcf/\x1fX\xfc1l\xf7K\xccyr\xce\xc9 \x81\x1a\\ T\x9e\xdc", 0x24)
11:30:32.037556 5866 strace.go:621] [ 8] sshd X write(0x4 socket:[5], ..., 0x24) = 0x24 (50.532µs)
11:30:32.037765 5866 strace.go:589] [ 8] sshd E select(0xb, 0x558cb94d2bc0 [4 5 10], 0x558cb94d4200 [], null, null)
Happy to collect other logs as necessary.
Steps to reproduce
- Get this container: https://github.com/WACTF/WACTF-development/tree/97bbbc584e89f87eaa554224823454219c76a49f/shellbox
- Remove the reduced capabilities: https://github.com/WACTF/WACTF-development/blob/97bbbc584e89f87eaa554224823454219c76a49f/shellbox/docker-compose.yaml#L11-L19
- Run container in gVisor and SSH to it with something like
ssh user@localhostpw:toor - Run a command such as
ping 8.8.8.8and attempt to Ctrl+C out of it.
Environment
- runsc -version:
runsc version release-20201030.0 / spec: 1.0.1-dev -
docker version:
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:36 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:01:06 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.7
GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175
docker-init:
Version: 0.18.0
GitCommit: fec3683
- uname -a:
Linux xxx 4.15.0-123-generic #126-Ubuntu SMP Wed Oct 21 09:40:11 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Any update on fixing this? I'm having the same issue with a similar setup...
I found gVisor even more restrictive now, I can SSH to a container but executing any sort of basic command fails.
runsc --version
runsc version release-20220905.0
spec: 1.0.2-dev

This is in docker Docker version 20.10.18, build b40c2f6
Here's a simple test setup. Keen to know if other people exhibit the same behaviour as me.
Dockerfile
FROM alpine:latest
RUN apk add --no-cache
RUN apk add openssh supervisor bash
# create a new user and group
RUN adduser -S -s /bin/bash -D user
RUN echo "user:toor" | chpasswd
# change ssh port 2222
sed -i -e "/Port /c\Port 2222" /etc/ssh/sshd_config
# move supervisor config and lock to root
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN chmod 400 /etc/supervisor/conf.d/supervisord.conf
# move start script and lock to root
COPY start.sh /root/start.sh
RUN chmod 700 /root/start.sh
CMD ["/root/start.sh"]
start.sh
#!/bin/sh
# fix sshd: no hostkeys available -- exiting.
/usr/bin/ssh-keygen -A
# run sshd
/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
supervisord.conf
[supervisord]
nodaemon=true
user=root
[program:sshd]
command=/usr/sbin/sshd -D
Test with:
ssh user@<docker ip> -p 2222 password: toor
I had the same issue, it was patched in #7943 but the latest release was built before that
Hmm, I just built from the master branch but unfortunately still having the issue
The issue of processes getting stopped in PTYs? I'm running it right now on with a Ubuntu container (ubuntu:latest unminimized) and it's working fine, the only issue is control characters.
$ runsc --version
runsc version release-20220905.0-19-gecda533559da
spec: 1.0.2-dev
Interestingly in a PTY spawned by docker exec (docker exec -it container bash) control characters do work, but not when they're spawned by sshd
SIGINT doesn't appear to work when using socat to spawn an interactive shell:
gvisor:
socat UNIX-LISTEN:/path/shell,forever,fork exec:'bash -li',pty,stderr,setsid,sigint,sane
outside:
socat STDIN,raw,echo=0 UNIX-CONNECT:/path/shell
upon using ctrl+c in socat outside of gvisor:
I0222 18:02:54.109975 1 strace.go:611] [ 5: 5] socat X select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [], 0x7fdcad891998 [], null) = 1 (0x1) (3.57982355s)
I0222 18:02:54.110068 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110111 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (7.905µs)
I0222 18:02:54.110142 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110183 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (2.234µs)
I0222 18:02:54.110219 1 strace.go:567] [ 5: 5] socat E read(0x6 socket:[4], 0x7fb753b0e000, 0x2000)
I0222 18:02:54.110254 1 strace.go:605] [ 5: 5] socat X read(0x6 socket:[4], 0x7fb753b0e000 "\x03", 0x2000) = 1 (0x1) (12.393µs)
I0222 18:02:54.110280 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110301 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.943µs)
I0222 18:02:54.110327 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110347 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.673µs)
I0222 18:02:54.110375 1 strace.go:567] [ 5: 5] socat E write(0x5 /dev/pts/ptmx, 0x7fb753b0e000 "\x03", 0x1)
I0222 18:02:54.110403 1 strace.go:605] [ 5: 5] socat X write(0x5 /dev/pts/ptmx, ..., 0x1) = 1 (0x1) (9.468µs)
I0222 18:02:54.110426 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110446 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.773µs)
I0222 18:02:54.110470 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110489 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.432µs)
I0222 18:02:54.110482 1 strace.go:614] [ 6: 6] bash X pselect6(0x1, 0x7f5c25d42a68 [0], null, null, null, 0x7f5c25d429b0 [SIGABRT SIGBUS SIGFPE SIGSEGV SIGUSR2 SIGPIPE SIGALRM SIGCONT SIGTSTP SIGTTIN SIGURG SIGXFSZ SIGVTALRM SIGIO SIGSYS 32 33 36 37 38 39 41 42 43 44 45 46 47]) = 1 (0x1) (3.580768005s)
I0222 18:02:54.110519 1 strace.go:573] [ 5: 5] socat E select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [5], 0x7fdcad891998 [], null)
I0222 18:02:54.110536 1 strace.go:611] [ 5: 5] socat X select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [5], 0x7fdcad891998 [], null) = 1 (0x1) (5.831µs)
I0222 18:02:54.110551 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110549 1 strace.go:567] [ 6: 6] bash E read(0x0 /dev/pts/0, 0x7f5c25d42a67, 0x1)
I0222 18:02:54.110579 1 strace.go:605] [ 6: 6] bash X read(0x0 /dev/pts/0, 0x7f5c25d42a67 "\x03", 0x1) = 1 (0x1) (3.747µs)
I0222 18:02:54.110607 1 strace.go:567] [ 6: 6] bash E writev(0x2 /dev/pts/0, 0x7f5c25d42a70 {base=0x7f79d3641eb8, len=0}, {base=0x7f5c25d42adf, len=1, "\a"}, 0x2)
I0222 18:02:54.110625 1 strace.go:605] [ 6: 6] bash X writev(0x2 /dev/pts/0, ..., 0x2) = 1 (0x1) (3.898µs)
I0222 18:02:54.110562 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.062µs)
I0222 18:02:54.110645 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110657 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.253µs)
I0222 18:02:54.110660 1 strace.go:576] [ 6: 6] bash E pselect6(0x1, 0x7f5c25d42a68 [0], null, null, null, 0x7f5c25d429b0 [SIGABRT SIGBUS SIGFPE SIGSEGV SIGUSR2 SIGPIPE SIGALRM SIGCONT SIGTSTP SIGTTIN SIGURG SIGXFSZ SIGVTALRM SIGIO SIGSYS 32 33 36 37 38 39 41 42 43 44 45 46 47])
I0222 18:02:54.110671 1 strace.go:573] [ 5: 5] socat E select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [], 0x7fdcad891998 [], null)
I0222 18:02:54.110685 1 strace.go:611] [ 5: 5] socat X select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [], 0x7fdcad891998 [], null) = 1 (0x1) (2.996µs)
I0222 18:02:54.110699 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110715 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.313µs)
I0222 18:02:54.110729 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110741 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (862ns)
I0222 18:02:54.110754 1 strace.go:567] [ 5: 5] socat E read(0x5 /dev/pts/ptmx, 0x7fb753b0e000, 0x2000)
I0222 18:02:54.110767 1 strace.go:605] [ 5: 5] socat X read(0x5 /dev/pts/ptmx, 0x7fb753b0e000 "\a", 0x2000) = 1 (0x1) (1.653µs)
I0222 18:02:54.110779 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110790 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad890e90, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (942ns)
I0222 18:02:54.110803 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110814 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (781ns)
I0222 18:02:54.110826 1 strace.go:567] [ 5: 5] socat E write(0x6 socket:[4], 0x7fb753b0e000 "\a", 0x1)
I0222 18:02:54.110843 1 strace.go:605] [ 5: 5] socat X write(0x6 socket:[4], ..., 0x1) = 1 (0x1) (7.063µs)
I0222 18:02:54.110858 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110869 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891380, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.102µs)
I0222 18:02:54.110882 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110894 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (852ns)
I0222 18:02:54.110907 1 strace.go:573] [ 5: 5] socat E select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [6], 0x7fdcad891998 [], null)
I0222 18:02:54.110926 1 strace.go:611] [ 5: 5] socat X select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [6], 0x7fdcad891998 [], null) = 1 (0x1) (8.716µs)
I0222 18:02:54.110940 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110951 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (1.002µs)
I0222 18:02:54.110964 1 strace.go:576] [ 5: 5] socat E recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null)
I0222 18:02:54.110976 1 strace.go:614] [ 5: 5] socat X recvfrom(0x3 socket:[5], 0x7fdcad891420, 0x207, 0x40, 0x0, null) = 0 (0x0) errno=11 (request would block) (751ns)
I0222 18:02:54.110989 1 strace.go:573] [ 5: 5] socat E select(0x7, 0x7fdcad891898 [5 6], 0x7fdcad891918 [], 0x7fdcad891998 [], null)
https://github.com/google/gvisor/pull/8562
Fixes the issue completely. Hopefully gets merged soon.
A friendly reminder that this issue had no activity for 120 days.
#8562 was merged.