python > 3.5: Issue with unix domain sockets

Mark Geisert mark@maxrnd.com
Wed May 5 04:25:53 GMT 2021


Hi Marco,

Marco Atzeri via Cygwin wrote:
> On 04.05.2021 06:41, Mark Geisert wrote:
>> Ken Brown via Cygwin wrote:
>>> On 5/3/2021 8:57 AM, Maximilian.Blenk--- via Cygwin wrote:
>>>> 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?
>>
>> Hmm, the correlation between failing Python versions and patch placements is 
>> troubling.  I've reproduced the OP's findings and will dig further.
>>
>> ..mark
>>
> 
> 3.5 has not your patch for asyncio, as I am not updating it.
> 
> all the others have it. It will be nice to solve this problem and avoid the freeze 
> that your patch solved.

It turns out a small adjustment to the existing patch fixes this latest issue and 
shouldn't affect the situations reported in the original bug report that provoked 
the patch in the first place.

Line 11 of the patch 3.6.12-socketmodule.patch has:
............return -1;
using dots to denote spaces because this mailer might deformat this email.  If 
that patch line is replaced with:
............/* ignore error returns */;
we have a patch that solves the latest issue as well as the original issue.

That revised patch should also apply to 3.7 and 3.8 without problems.
Thanks & Regards,

..mark


More information about the Cygwin-apps mailing list