From: Victor Stinner Date: Sun, 27 Jul 2014 22:19:36 +0000 (+0200) Subject: (Merge 3.4) asyncio, tulip issue 196: ProactorIocp._register() now registers X-Git-Tag: v3.5.0a1~1175 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=314397aeef7ae284c98137dacb011985614b135e;p=thirdparty%2FPython%2Fcpython.git (Merge 3.4) asyncio, tulip issue 196: ProactorIocp._register() now registers the overlapped in the _cache dictionary, even if we already got the result. We need to keep a reference to the overlapped object, otherwise the memory may be reused and GetQueuedCompletionStatus() may use random bytes and behaves badly. There is still a hack for ConnectNamedPipe(): the overlapped object is not register into _cache if the overlapped object completed directly. Log also an error in debug mode in ProactorIocp._loop() if we get an unexpected event. Add a protection in ProactorIocp.close() to avoid blocking, even if it should not happen. I still don't understand exactly why some the completion of some overlapped objects are not notified. --- 314397aeef7ae284c98137dacb011985614b135e