(original) (raw)
changeset: 106013:b14a1e81c34a branch: 3.6 parent: 106011:7b9d4a7cfc0f user: Victor Stinner victor.stinner@gmail.com date: Fri Jan 06 10:44:44 2017 +0100 files: Lib/subprocess.py description: Fix subprocess.Popen.__del__() fox Python shutdown Issue #29174, #26741: subprocess.Popen.__del__() now keeps a strong reference to warnings.warn() function. diff -r 7b9d4a7cfc0f -r b14a1e81c34a Lib/subprocess.py --- a/Lib/subprocess.py Fri Jan 06 09:51:22 2017 +0100 +++ b/Lib/subprocess.py Fri Jan 06 10:44:44 2017 +0100 @@ -750,15 +750,15 @@ # Wait for the process to terminate, to avoid zombies. self.wait() - def __del__(self, _maxsize=sys.maxsize): + def __del__(self, _maxsize=sys.maxsize, _warn=warnings.warn): if not self._child_created: # We didn't get to successfully create a child process. return if self.returncode is None: # Not reading subprocess exit status creates a zombi process which # is only destroyed at the parent python process exit - warnings.warn("subprocess %s is still running" % self.pid, - ResourceWarning, source=self) + _warn("subprocess %s is still running" % self.pid, + ResourceWarning, source=self) # In case the child hasn't been waited on, check if it's done. self._internal_poll(_deadstate=_maxsize) if self.returncode is None and _active is not None: /victor.stinner@gmail.com