From: Victor Stinner Date: Fri, 20 May 2016 11:05:48 +0000 (+0200) Subject: asyncio: fix ResourceWarning related to subprocesses X-Git-Tag: v3.5.2rc1~134 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b0d43ce890adbcfea2e1dff7ba6e76c5c046b61c;p=thirdparty%2FPython%2Fcpython.git asyncio: fix ResourceWarning related to subprocesses Issue #26741: asyncio: BaseSubprocessTransport._process_exited() now copies the return code from the child watched to the returncode attribute of the Popen object. On Python 3.6, it is required to avoid a ResourceWarning. --- diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py index 08080bd70124..8fc253c18eb9 100644 --- a/Lib/asyncio/base_subprocess.py +++ b/Lib/asyncio/base_subprocess.py @@ -210,6 +210,10 @@ class BaseSubprocessTransport(transports.SubprocessTransport): logger.info('%r exited with return code %r', self, returncode) self._returncode = returncode + if self._proc.returncode is None: + # asyncio uses a child watcher: copy the status into the Popen + # object. On Python 3.6, it is required to avoid a ResourceWarning. + self._proc.returncode = returncode self._call(self._protocol.process_exited) self._try_finish()