Fix subprocess.Popen.__del__() fox Python shutdown
Issue #29174, #26741: subprocess.Popen.__del__() now keeps a strong reference to warnings.warn() function.
This commit is contained in:
parent
94d1bfa2ef
commit
9505b03bb0
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue