New submission from Jon Banafato <j...@jonafato.com>:
Calling loop.close() on an eventloop configured to use a ProcessPoolExecutor can result in an OSError. Expected behavior: no exception raised. Actual behavior: an OSError is raised, and following this call, quit() fails to terminate the process gracefully. Example: Python 3.8.0a0 (default, Jul 7 2018, 14:35:49) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import asyncio >>> from concurrent.futures import ProcessPoolExecutor >>> import os >>> >>> loop = asyncio.get_event_loop_policy().new_event_loop() >>> loop.set_default_executor(ProcessPoolExecutor()) >>> future = loop.run_in_executor(None, os.getpid) >>> loop.run_until_complete(future) 24697 >>> loop.close() Exception ignored in: <function ProcessPoolExecutor._start_queue_management_thread.<locals>.weakref_cb at 0x7f52e7f643f0> Traceback (most recent call last): File "/code/Lib/concurrent/futures/process.py", line 567, in weakref_cb thread_wakeup.wakeup() File "/code/Lib/concurrent/futures/process.py", line 89, in wakeup self._writer.send_bytes(b"") File "/code/Lib/multiprocessing/connection.py", line 183, in send_bytes self._check_closed() File "/code/Lib/multiprocessing/connection.py", line 136, in _check_closed Exception in thread QueueManagerThread: Traceback (most recent call last): File "/code/Lib/threading.py", line 917, in _bootstrap_inner self.run() File "/code/Lib/threading.py", line 865, in run self._target(*self._args, **self._kwargs) File "/code/Lib/concurrent/futures/process.py", line 368, in _queue_management_worker thread_wakeup.clear() File "/code/Lib/concurrent/futures/process.py", line 92, in clear while self._reader.poll(): File "/code/Lib/multiprocessing/connection.py", line 255, in poll self._check_closed() File "/code/Lib/multiprocessing/connection.py", line 136, in _check_closed raise OSError("handle is closed") OSError: handle is closed raise OSError("handle is closed") OSError: handle is closed ---------- components: Library (Lib), asyncio messages: 321297 nosy: asvetlov, jonafato, yselivanov priority: normal severity: normal status: open title: asyncio and ProcessPoolExecutor: OSError on loop.close() type: behavior versions: Python 3.7, Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue34073> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com