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