浏览代码

Fix race condition in subprocess runner

stdin, stdout, and stderr being closed does not necessarily imply that the process has exited, although it usually does. Still need to explicitly wait for it to terminate after the I/O loop. This matches what the stdlib `subprocess.Popen._communicate` does as well.
tags/v1.0
JustAnotherArchivist 1年前
父节点
当前提交
adafd6bd01
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. +1
    -0
      codearchiver/subprocess.py

+ 1
- 0
codearchiver/subprocess.py 查看文件

@@ -66,6 +66,7 @@ def run_with_log(args, *, check = True, input = None, **kwargs):
stdout.append(data)
if stderrBuf:
_logger.info(stderrBuf.decode('utf-8'))
p.wait()
assert p.poll() is not None
if input is not None and stdinOffset < len(input):
_logger.warning(f'Could not write all input to the stdin pipe (wanted to write {len(input)} bytes, only wrote {stdinOffset})')


正在加载...
取消
保存