diff options
-rw-r--r-- | runtime/staprun/ChangeLog | 6 | ||||
-rw-r--r-- | runtime/staprun/mainloop.c | 19 |
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; } |