summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/staprun/ChangeLog6
-rw-r--r--runtime/staprun/mainloop.c19
2 files changed, 25 insertions, 0 deletions
diff --git a/runtime/staprun/ChangeLog b/runtime/staprun/ChangeLog
index 6e8a49f6..9f44022f 100644
--- a/runtime/staprun/ChangeLog
+++ b/runtime/staprun/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-28 Frank Ch. Eigler <fche@elastic.org>
+
+ PR6964, from Wenji Huang <wenji.huang@oracle.com>:
+ * mainloop.c (start_cmd, stp_main_loop): Temporarily
+ disable ptrace calls.
+
2008-10-15 Frank Ch. Eigler <fche@elastic.org>
* mainloop.c (start_cmd): Fix wordexp error handling.
diff --git a/runtime/staprun/mainloop.c b/runtime/staprun/mainloop.c
index 9221d8a6..dcf61cf9 100644
--- a/runtime/staprun/mainloop.c
+++ b/runtime/staprun/mainloop.c
@@ -155,8 +155,14 @@ void start_cmd(void)
if (words.we_wordc < 1) { _err ("empty -c COMMAND"); _exit (1); }
}
+/* PR 6964: when tracing all the user space process including the child
+ the signal will be messed due to uprobe module or utrace bug. The kernel
+ will get crashed. Temporarily disabled.
+*/
+#if 0
rc = ptrace (PTRACE_TRACEME, 0, 0, 0);
if (rc < 0) perror ("ptrace me");
+#endif
#if 0
dbug(1, "blocking briefly\n");
@@ -178,10 +184,17 @@ void start_cmd(void)
} else {
/* We're in the parent. The child will parse target_cmd and execv()
the result. It will be stopped thereabouts and send us a SIGTRAP. */
+
target_pid = pid;
+/* PR 6964: when tracing all the user space process including the child
+ the signal will be messed due to uprobe module or utrace bug. The kernel
+ will get crashed. Temporarily disabled.
+*/
+#if 0
int status;
waitpid (target_pid, &status, 0);
dbug(1, "waited for target_cmd %s pid %d status %x\n", target_cmd, target_pid, (unsigned) status);
+#endif
}
}
@@ -389,6 +402,11 @@ int stp_main_loop(void)
kill(target_pid, SIGKILL);
cleanup_and_exit(0);
} else if (target_cmd) {
+/* PR 6964: when tracing all the user space process including the child
+ the signal will be messed due to uprobe module or utrace bug. The kernel
+ will get crashed. Temporarily disabled.
+*/
+#if 0
dbug(1, "detaching pid %d\n", target_pid);
int rc = ptrace (PTRACE_DETACH, target_pid, 0, 0);
if (rc < 0)
@@ -398,6 +416,7 @@ int stp_main_loop(void)
kill(target_pid, SIGKILL);
cleanup_and_exit(0);
}
+#endif
}
break;
}