From f9231fa4af4fd13e61c3d74e9bad7915debd2a53 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 15 Jan 2019 13:29:11 +0100 Subject: [PATCH] bpo-23846: Fix ProactorEventLoop._write_to_self() 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 | 8 +++++++- .../next/Library/2019-01-15-13-31-30.bpo-23846.LT_qL8.rst | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2019-01-15-13-31-30.bpo-23846.LT_qL8.rst diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py index 3a1826e2c0d228..a849be1cc1479b 100644 --- a/Lib/asyncio/proactor_events.py +++ b/Lib/asyncio/proactor_events.py @@ -636,7 +636,13 @@ def _loop_self_reading(self, f=None): 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 index 00000000000000..788f092df9c169 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-01-15-13-31-30.bpo-23846.LT_qL8.rst @@ -0,0 +1,2 @@ +:class:`asyncio.ProactorEventLoop` now catchs and logs send errors when the +self-pipe is full.