python > 3.5: Issue with unix domain sockets
Ken Brown
kbrown@cornell.edu
Mon May 3 13:58:36 GMT 2021
On 5/3/2021 8:57 AM, Maximilian.Blenk--- via Cygwin wrote:
> Hello everyone,
>
> I noticed that latest Cygwin release (3.2.0-1) has an issue with python and unix domain sockets, although I’m not a 100% sure about the root cause. My best guess is that something is wrong with the unix domain dockets implementation. I would like to attach the cygcheck.out but it seems to exceed the 180kb limit mentioned on the website (even zipped)
>
> Simple Reproducer:
> I tried to get the example shown at https://pymotw.com/3/socket/uds.html working. It works if I execute it with python3.5 (both client and server), but it doesn’t if I use python3.6 or newer (actually tested 3.6 and 3.7 on Windows 10):
>
> Correct Behavior:
> Server:
> $ python3.5 server.py
> starting up on ./uds_socket
> waiting for a connection
> connection from
> received b'This is the mess'
> sending data back to the client
> received b'age. It will be'
> sending data back to the client
> received b' repeated.'
> sending data back to the client
> received b''
> no data from
> waiting for a connection
> …
>
> Client:
> $ python3.5 client.py
> connecting to ./uds_socket
> sending b'This is the message. It will be repeated.'
> received b'This is the mess'
> received b'age. It will be'
> received b' repeated.'
> closing socket
>
> Incorrect Behavior:
> Server:
> $ python3.7 server.py
> starting up on ./uds_socket
> waiting for a connection
> Traceback (most recent call last):
> File "server.py", line 27, in <module>
> connection, client_address = sock.accept()
> File "/usr/lib/python3.7/socket.py", line 214, in accept
> sock = socket(self.family, self.type, self.proto, fileno=fd)
> File "/usr/lib/python3.7/socket.py", line 151, in __init__
> _socket.socket.__init__(self, family, type, proto, fileno)
> SystemError: <slot wrapper '__init__' of '_socket.socket' objects> returned NULL without setting an error
>
> Client:
> $ python3.7 client.py
> connecting to ./uds_socket
> sending b'This is the message. It will be repeated.'
> closing socket
> Traceback (most recent call last):
> File "client.py", line 27, in <module>
> data = sock.recv(16)
> ConnectionResetError: [Errno 104] Connection reset by peer
I wonder if this has the same cause as the problem reported here:
https://cygwin.com/pipermail/cygwin/2021-February/247884.html
Mark, can you check that?
Ken
More information about the Cygwin
mailing list