Change in osmo-gsm-tester[master]: processes: Fix kill of processes run under sudo

Pau Espin Pedrol gerrit-no-reply at lists.osmocom.org
Fri Apr 5 18:11:45 UTC 2019


Pau Espin Pedrol has uploaded this change for review. ( https://gerrit.osmocom.org/13532


Change subject: processes: Fix kill of processes run under sudo
......................................................................

processes: Fix kill of processes run under sudo

sudo drops forwarding of signals sent by processes of the same
process group, which means by default will drop signals from
parent and children processes. By moving it to another group, we
will later be able to kill it.
Note: sudo documentation is wrong, since it states it only drops
signals from children.

See following link for more information:
https://stackoverflow.com/questions/34337840/cant-terminate-a-sudo-process-created-with-python-in-ubuntu-15-10

Change-Id: I25990234aaa496c501ff45ad7f7fd549d6f188da
---
M src/osmo_gsm_tester/process.py
1 file changed, 11 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/32/13532/1

diff --git a/src/osmo_gsm_tester/process.py b/src/osmo_gsm_tester/process.py
index 66ecae5..12da831 100644
--- a/src/osmo_gsm_tester/process.py
+++ b/src/osmo_gsm_tester/process.py
@@ -157,16 +157,27 @@
         return f
 
     def launch(self):
+        preexec_fn = None
         log.dbg('cd %r; %s %s' % (
                 os.path.abspath(str(self.run_dir)),
                 ' '.join(['%s=%r'%(k,v) for k,v in self.popen_kwargs.get('env', {}).items()]),
                 ' '.join(self.popen_args)))
 
+        if self.popen_args[0] == "sudo":
+            # sudo drops forwarding of signals sent by processes of the same
+            # process group, which means by default will drop signals from
+            # parent and children processes. By moving it to another group, we
+            # will later be able to kill it.
+            # Note: sudo documentation is wrong, since it states it only drops
+            # signals from children.
+            preexec_fn = os.setpgrp
+
         self.process_obj = subprocess.Popen(
             self.popen_args,
             stdout=self.make_output_log('stdout'),
             stderr=self.make_output_log('stderr'),
             stdin=subprocess.PIPE,
+            preexec_fn = preexec_fn,
             shell=False,
             cwd=self.run_dir.path,
             **self.popen_kwargs)

-- 
To view, visit https://gerrit.osmocom.org/13532
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I25990234aaa496c501ff45ad7f7fd549d6f188da
Gerrit-Change-Number: 13532
Gerrit-PatchSet: 1
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190405/a73e1a28/attachment.html>


More information about the gerrit-log mailing list