Message292002
subprocess triggers a debug assertion in the CRT on failure to execute the process due to closing the pipe *handles* in the except clause using os.close rather than .Close() (os.close closes CRT file descriptors and not handles).
In addition to that once this is fixed there is also a double free/close since we need to set `self._closed_child_pipe_fds = True` once we closed the handles in _execute_child so they won't also be closed in __init__.
To reproduce, do this in a debug build of Python:
import subprocess
subprocess.Popen('exe_that_doesnt_exist.exe', stdout=subprocess.PIPE)
See: https://github.com/python/cpython/pull/1218#discussion_r112550959 |
|
Date |
User |
Action |
Args |
2017-04-20 22:43:55 | Segev Finer | set | recipients:
+ Segev Finer, paul.moore, tim.golden, zach.ware, eryksun, steve.dower |
2017-04-20 22:43:55 | Segev Finer | set | messageid: <1492728235.69.0.898513798091.issue30121@psf.upfronthosting.co.za> |
2017-04-20 22:43:55 | Segev Finer | link | issue30121 messages |
2017-04-20 22:43:55 | Segev Finer | create | |
|