]> granicus.if.org Git - python/commitdiff
bpo-23846: Fix ProactorEventLoop._write_to_self() (GH-11566)
authorVictor Stinner <vstinner@redhat.com>
Tue, 15 Jan 2019 12:58:38 +0000 (13:58 +0100)
committerGitHub <noreply@github.com>
Tue, 15 Jan 2019 12:58:38 +0000 (13:58 +0100)
asyncio.ProactorEventLoop now catchs and logs send errors when the
self-pipe is full: BaseProactorEventLoop._write_to_self() now catchs
and logs OSError exceptions, as done by
BaseSelectorEventLoop._write_to_self().

Lib/asyncio/proactor_events.py
Misc/NEWS.d/next/Library/2019-01-15-13-31-30.bpo-23846.LT_qL8.rst [new file with mode: 0644]

index 3a1826e2c0d22884a61f0c737731632d62a186af..a849be1cc1479b03659d03b539ad366630700b50 100644 (file)
@@ -636,7 +636,13 @@ class BaseProactorEventLoop(base_events.BaseEventLoop):
             f.add_done_callback(self._loop_self_reading)
 
     def _write_to_self(self):
-        self._csock.send(b'\0')
+        try:
+            self._csock.send(b'\0')
+        except OSError:
+            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, backlog=100,
diff --git a/Misc/NEWS.d/next/Library/2019-01-15-13-31-30.bpo-23846.LT_qL8.rst b/Misc/NEWS.d/next/Library/2019-01-15-13-31-30.bpo-23846.LT_qL8.rst
new file mode 100644 (file)
index 0000000..788f092
--- /dev/null
@@ -0,0 +1,2 @@
+:class:`asyncio.ProactorEventLoop` now catchs and logs send errors when the
+self-pipe is full.