You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It works as root and via slirp4netns port handler. I suspect that this is simply not implemented in the builtin port forwarder?
I haven't looked closely at the code here but it seems like we already use oob data to forward fds between child and parent process? I am not sure if this is causing the issues here.
I am forwarding the report from @pushpi55 here because I think this must be fixed here and there isn't really anything podman could do about that.
Podman is running in rootless mode and a server is listening on a port and using splice call to read the message.
When OOB message is being received the process inside the container is stuck forever in splice call.
Attached the strace of the container running the process strace_podman_linux_image.txt
Steps to reproduce:
Pull a RHEL8 image from repo.
Install gcc and run the following program to start the server and start a client to send OOB message
Run the server program inside container which is using splice system call
import socket
HOST='127.0.0.1'
PORT=44957
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.send(b'!',socket.MSG_OOB)
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
Started a server inside container and it is stuck in splice system call
(gdb) bt
#0 0x00007f30452764e8 in accept () from /lib64/libc.so.6
#1 0x0000000000400a28 in main () at serv.c:30
(gdb) n
Single stepping until exit from function accept,
which has no line number information.
main () at serv.c:31
31 if(splice(sockfd,0, pipefd[1],0,100,SPLICE_F_MOVE | SPLICE_F_MORE) <0) {
(gdb)
The text was updated successfully, but these errors were encountered:
A podman user reported that a server hangs when receiving oob data. containers/podman#18161
It works as root and via slirp4netns port handler. I suspect that this is simply not implemented in the builtin port forwarder?
I haven't looked closely at the code here but it seems like we already use oob data to forward fds between child and parent process? I am not sure if this is causing the issues here.
I am forwarding the report from @pushpi55 here because I think this must be fixed here and there isn't really anything podman could do about that.
Podman is running in rootless mode and a server is listening on a port and using splice call to read the message.
When OOB message is being received the process inside the container is stuck forever in splice call.
Attached the strace of the container running the process
strace_podman_linux_image.txt
Steps to reproduce:
Started a server inside container and it is stuck in splice system call
The text was updated successfully, but these errors were encountered: