commit: fc78181d856ef0ecf6fa21262cc87fe71426d8e3
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 21 19:12:20 2015 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Nov 23 16:27:28 2015 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=fc78181d
SpawnProcess: make _cancel kill all processes in cgroup (bug 566414)
Since the _cancel method is used to kill subprocesses after die is
called, this fixes die calls in subshells to kill all processes in
the cgroup. For example, see the test ebuild attached to bug 465008,
which would hang for 60 seconds after die was called as follows:
sleep 60 | ( false || die )
X-Gentoo-Bug: 566414
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=566414
Acked-by: Alexander Berntsen <bernalex <AT> gentoo.org>
pym/_emerge/SpawnProcess.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/pym/_emerge/SpawnProcess.py b/pym/_emerge/SpawnProcess.py
index 5ab2e67..b4b4b5b 100644
--- a/pym/_emerge/SpawnProcess.py
+++ b/pym/_emerge/SpawnProcess.py
@@ -179,7 +179,13 @@ class SpawnProcess(SubProcess):
def _set_returncode(self, wait_retval):
SubProcess._set_returncode(self, wait_retval)
+ self._cgroup_cleanup()
+ def _cancel(self):
+ SubProcess._cancel(self)
+ self._cgroup_cleanup()
+
+ def _cgroup_cleanup(self):
if self.cgroup:
def get_pids(cgroup):
try: