From 65dd69a3da16257bd86b92900e5ec5a8dd26f1d9 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 25 Jul 2014 22:36:05 +0200 Subject: [PATCH] asyncio: sync with Tulip * Tulip issue #196: IocpProactor._poll() clears the reference to the overlapped operation when the operation is done. It would be better to clear the reference in a new _OverlappedFuture.set_result() method, but it cannot be done yet because of a weird bug. * BaseSelectorEventLoop._write_to_self() now logs errors in debug mode. --- Lib/asyncio/selector_events.py | 5 ++++- Lib/asyncio/windows_events.py | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py index cd1a75aa78e..eca48b8e7c2 100644 --- a/Lib/asyncio/selector_events.py +++ b/Lib/asyncio/selector_events.py @@ -120,7 +120,10 @@ class BaseSelectorEventLoop(base_events.BaseEventLoop): try: csock.send(b'\0') except OSError: - pass + if self._debug: + logger.debug("Fail to write a null byte into the " + "self-pipe socket", + exc_info=True) def _start_serving(self, protocol_factory, sock, sslcontext=None, server=None): diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py index 375003c4f1c..65ecf340316 100644 --- a/Lib/asyncio/windows_events.py +++ b/Lib/asyncio/windows_events.py @@ -489,6 +489,11 @@ class IocpProactor: else: f.set_result(value) self._results.append(f) + # FIXME, tulip issue #196: add _OverlappedFuture.set_result() + # method to clear the refrence, don't do it here (f may + # by a _WaitHandleFuture). Problem: clearing the reference + # in _register() if ov.pedding is False leads to weird bugs. + f._ov = None ms = 0 def _stop_serving(self, obj):