diff options
author | Josh Stone <jistone@redhat.com> | 2009-04-01 14:49:12 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-04-01 15:39:04 -0700 |
commit | 4cc40e829870dd6a1d9714706d38f5fd4b2ec982 (patch) | |
tree | 9c9607d35b5b4c9578b057627d4542836b67875c /buildrun.cxx | |
parent | 0dbfd2a9ccad1759c58f240843cabc50d502e44a (diff) | |
download | systemtap-steved-4cc40e829870dd6a1d9714706d38f5fd4b2ec982.tar.gz systemtap-steved-4cc40e829870dd6a1d9714706d38f5fd4b2ec982.tar.xz systemtap-steved-4cc40e829870dd6a1d9714706d38f5fd4b2ec982.zip |
PR10016: Purge stap of all pgrp and system() usage
We hereby no longer try to manipulate process groups in any way. We
don't set a private process group, and we never kill() our entire group
either. Instead of using system(), we now have a stap_system() which
saves the child PID, so when we get a terminating signal we can pass it
along to the child.
Signals sent through the TTY have always worked, since the TTY sends it
to the entire pgrp. However, if we're running as part of a wrapper
script or GUI, which may not have a separate process group for stap, we
still would like to allow "kill -TERM $STAPPID" to terminate stap
nicely.
There's still a short window of failure in the time that staprun is
active, because we can't kill a setuid process from a user process.
Once staprun drops privileges and execs to stapio though, everything
should work fine.
Diffstat (limited to 'buildrun.cxx')
-rw-r--r-- | buildrun.cxx | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/buildrun.cxx b/buildrun.cxx index 97357692..71a34c96 100644 --- a/buildrun.cxx +++ b/buildrun.cxx @@ -56,7 +56,7 @@ run_make_cmd(systemtap_session& s, string& make_cmd) make_cmd += " -s >/dev/null 2>&1"; if (s.verbose > 1) clog << "Running " << make_cmd << endl; - rc = system (make_cmd.c_str()); + rc = stap_system (make_cmd.c_str()); return rc; } @@ -223,7 +223,7 @@ kernel_built_uprobes (systemtap_session& s) { string grep_cmd = string ("/bin/grep -q unregister_uprobe ") + s.kernel_build_tree + string ("/Module.symvers"); - int rc = system (grep_cmd.c_str()); + int rc = stap_system (grep_cmd.c_str()); return (rc == 0); } @@ -274,7 +274,7 @@ copy_uprobes_symbols (systemtap_session& s) string uprobes_home = s.runtime_path + "/uprobes"; string cp_cmd = string("/bin/cp ") + uprobes_home + string("/Module.symvers ") + s.tmpdir; - int rc = system (cp_cmd.c_str()); + int rc = stap_system (cp_cmd.c_str()); return rc; } @@ -339,7 +339,7 @@ run_pass (systemtap_session& s) if (s.verbose>1) clog << "Running " << staprun_cmd << endl; - rc = system (staprun_cmd.c_str ()); + rc = stap_system (staprun_cmd.c_str ()); return rc; } |