summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdistbuild-helper1
-rw-r--r--distbuild/subprocess_eventsrc.py6
2 files changed, 5 insertions, 2 deletions
diff --git a/distbuild-helper b/distbuild-helper
index 76a39d5f..1f648dd4 100755
--- a/distbuild-helper
+++ b/distbuild-helper
@@ -131,6 +131,7 @@ class HelperMachine(distbuild.StateMachine):
'JsonMachine: exec request: stdin=%s', repr(stdin_contents))
p = subprocess.Popen(argv,
+ preexec_fn=os.setpgrp,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
diff --git a/distbuild/subprocess_eventsrc.py b/distbuild/subprocess_eventsrc.py
index 52121502..e025161e 100644
--- a/distbuild/subprocess_eventsrc.py
+++ b/distbuild/subprocess_eventsrc.py
@@ -16,6 +16,8 @@
import logging
+import os
+import signal
import distbuild
@@ -92,8 +94,8 @@ class SubprocessEventSource(distbuild.EventSource):
logging.debug('SES: Killing all processes for %s', request_id)
for id, process in self.procs:
if id == request_id:
- logging.debug('SES: killing %s', repr(process))
- process.kill()
+ logging.debug('SES: killing process group of %r', process)
+ os.killpg(process.pid, signal.SIGKILL)
def close(self):
self.procs = []