summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-01-06 09:44:44 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2017-01-06 09:44:44 (GMT)
commit9505b03bb0d3c5828115fec9306cb976c43f04d9 (patch)
tree0f296fc0749f1aceb986be2181b75b2d7854914f
parent94d1bfa2efef23a181ca2aec8550fdb7f24d8a90 (diff)
downloadcpython-9505b03bb0d3c5828115fec9306cb976c43f04d9.zip
cpython-9505b03bb0d3c5828115fec9306cb976c43f04d9.tar.gz
cpython-9505b03bb0d3c5828115fec9306cb976c43f04d9.tar.bz2
Fix subprocess.Popen.__del__() fox Python shutdown
Issue #29174, #26741: subprocess.Popen.__del__() now keeps a strong reference to warnings.warn() function.
-rw-r--r--Lib/subprocess.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 0b880f6..13b9d44 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -750,15 +750,15 @@ class Popen(object):
# 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: