X-Recipient: archive-cygwin AT delorie DOT com X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 034C1388C025 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=maxrnd.com Authentication-Results: sourceware.org; spf=none smtp.mailfrom=mark AT maxrnd DOT com Subject: Re: python fails asyncio tests (py 3.7 & 3.8) From: Mark Geisert To: cygwin AT cygwin DOT com References: <5233b4bb-8e9e-b6bd-0a56-c6ce5aa43f42 AT JC-Bell DOT com> Message-ID: Date: Sun, 6 Dec 2020 23:58:27 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4 MIME-Version: 1.0 In-Reply-To: X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: cygwin-bounces AT cygwin DOT com Sender: "Cygwin" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 0B82jaGd002028 [Replying to myself...] Mark Geisert wrote: > Jim Bell wrote: >> On 2020-11-21 5:59 AM, Jim Bell wrote: >>> The standard python asyncio tests hang. >>> >>>         cd /usr/lib/python3.8/test >>> >>>         python3.8 test_asyncore.py -v >>> >>> [...] >> Using strace, stripping down this very repeatable test, and grabbing the >> source-code snapshot, it looks like winsup/cygwin/select.cc socket_cleanup() is >> waiting forever for the thread to go away. >> >> strace: >> >>    121 6732185 [main] python3.8 13329 select_stuff::cleanup: calling cleanup rout >> ines >>    178 6732363 [main] python3.8 13329 socket_cleanup: si 0x800290E10 si->thread 0 >> x18023E758 >> - [...] > Thanks for the report and especially for the initial debugging you've done.  I've > reproduced the issue on my test machine.  No need to supply 'cygcheck -svr' at > this point.  I'll investigate this further and keep you posted (on the Cygwin > mailing list). The problem is actually further down in the guts of Cygwin's Unix Domain Socket handling. Specifically it has to do with the credential passing between client and server ends of a connection as part of its setup. There is a workaround for this problem that involves turning off socket option SO_PEERCRED on both the connecting and listening sockets. Unfortunately there's another problem. With the current Cygwin DLL build you'll get an EINVAL error trying to do that setsockopt() operation. I have submitted a patch that fixes this 2nd problem. A future Cygwin snapshot TBA will contain this patch. As for the test script errors you reported, I can submit a workaround patch that would make its way into the Python3.8 tests. I am unsure at the moment which Cygwin package contains those tests but I can figure that out. Otherwise, I could tell you what needs to be patched in test_asyncore.py and you could edit the script yourself to fix this locally for yourself. Let me know how you'd like to proceed, when you have a chance. ..mark -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple