diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-04-07 18:28:02 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-04-21 11:36:31 +0000 |
commit | 52ff3a3236a231cae2b57c67ace733b75d124b63 (patch) | |
tree | 615a18b989403d52c6956f0d8583c476d837d244 /yarns | |
parent | b2f13f721f249215007084b6df8b9c591cde8962 (diff) | |
download | morph-52ff3a3236a231cae2b57c67ace733b75d124b63.tar.gz |
distbuild: Kill the whole process tree when cancelling a build
We discovered a case where a user of distbuild began a build of
'qtbase', then cancelled it 2 minutes in. The `morph worker-build`
process didn't exit for over an hour -- it ran right through until the
chunk artifacts had been created. Then it exited with code -9 (SIGKILL).
This seems to be due to the fact that SIGKILL doesn't kill subprocesses,
and so any file descriptors the subprocesses have open will remain open.
If we set up the `morph worker-build` process as a process group
leader, using os.setpgid(), then we can use os.killpg() to kill the
entire process group. This should ensure that the `morph worker-build`
command exits straight away, as all of its subprocesses will be killed
at the same time it is.
Change-Id: I38707d18004d8c5bc994fd0cb99e90fd5def58e4
Diffstat (limited to 'yarns')
0 files changed, 0 insertions, 0 deletions