diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-07-27 22:19:36 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-07-27 22:19:36 (GMT) |
commit | 314397aeef7ae284c98137dacb011985614b135e (patch) | |
tree | dfe90623a74780b87b03abd1c4b6a889863f11c7 /Lib/asyncio/tasks.py | |
parent | 0f41acb0eab3314aa9235632de9f0c705a51a6f1 (diff) | |
parent | 42d3bdeed6e34117b787d61a471563a0dba6a894 (diff) | |
download | cpython-314397aeef7ae284c98137dacb011985614b135e.zip cpython-314397aeef7ae284c98137dacb011985614b135e.tar.gz cpython-314397aeef7ae284c98137dacb011985614b135e.tar.bz2 |
(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.
Diffstat (limited to 'Lib/asyncio/tasks.py')
0 files changed, 0 insertions, 0 deletions