Message346985
>> If one of the processes in that list is gone, then (...) "The handle
>> is invalid" (...) will prevent you from creating any new processes
>> with Popen after that
>
> It's the first time that I see such bug report.
IIRC it's the second time I've seen that issue reported. It should be rare. It should only occur if some other code in our process or another process closes our _handle value. It's not our bug. Here's an example in 3.7:
>>> p = subprocess.Popen('python -c "input()"', stdin=subprocess.PIPE)
>>> del p
>>> subprocess._active
[<subprocess.Popen object at 0x0000015E5C94E160>]
>>> subprocess._active[0]._handle.Close()
The process is active, but something closed our handle. The next time Popen.__init__ calls _cleanup, _internal_poll raises OSError due to the invalid handle:
>>> subprocess.call('python -V')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python37\lib\subprocess.py", line 323, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Program Files\Python37\lib\subprocess.py", line 664, in __init__
_cleanup()
File "C:\Program Files\Python37\lib\subprocess.py", line 228, in _cleanup
res = inst._internal_poll(_deadstate=sys.maxsize)
File "C:\Program Files\Python37\lib\subprocess.py", line 1216, in _internal_poll
if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
OSError: [WinError 6] The handle is invalid
I wouldn't want _internal_poll to silence this error, but maybe it could be translated into a warning. That said, since there's no need to wait on a process in Windows, there's no need for __del__ to insert a running process in a list of active process, in which case there's nothing for _cleanup to do. Given we're in __del__, our private _handle is about to be closed, at least it will be in CPython. Other implementations should wait() or use a with statement, in order to explicitly close the process handle. The latter isn't implemented currently, but you opened issue 37410 to address this. |
|
Date |
User |
Action |
Args |
2019-07-01 09:30:39 | eryksun | set | recipients:
+ eryksun, gregory.p.smith, paul.moore, vstinner, tim.golden, zach.ware, steve.dower, efiop |
2019-07-01 09:30:39 | eryksun | set | messageid: <1561973439.77.0.0820611714443.issue37380@roundup.psfhosted.org> |
2019-07-01 09:30:39 | eryksun | link | issue37380 messages |
2019-07-01 09:30:39 | eryksun | create | |
|