lkml.org 
[lkml]   [2002]   [Jan]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] ptrace on stopped processes (2.4)
From
Date
vic <zandy@cs.wisc.edu> writes:

> From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>:
> >> --- linux-2.4.16/kernel/ptrace.c Wed Nov 21 16:43:01 2001
> >> +++ linux-2.4.16.1/kernel/ptrace.c Fri Dec 21 10:42:44 2001
> >> @@ -89,8 +89,10 @@
> >> SET_LINKS(task);
> >> }
> >> write_unlock_irq(&tasklist_lock);
> >> -
> >> - send_sig(SIGSTOP, task, 1);
> >> + if (task->state != TASK_STOPPED)
> >> + send_sig(SIGSTOP, task, 1);
> >> + else
> >> + task->exit_code = SIGSTOP;
> >> return 0;
> >>
> >> bad:
> >
> > It seems that trace is started in the place different from
> > usual. Then, I think PTRACE_KILL doesn't work.
>
> I don't agree, it seems to work for me.

I tested the following on linux-2.4.16 + your_patch:

#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/ptrace.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
pid_t pid;
int ret, status;
pid = fork();
if (pid == -1)
exit(1);
if (pid == 0) {
raise(SIGSTOP);
while (1)
;
_exit(1);
}
ret = waitpid(pid, &status, WUNTRACED);
if (ret == -1) {
perror("waitpid (1)");
exit(1);
}
ret = ptrace(PTRACE_ATTACH, pid, NULL, NULL);
if (ret == -1) {
perror("PTRACE_ATTACH");
exit(1);
}
ret = waitpid(pid, &status, 0);
if (ret == -1) {
perror("waitpid (2)");
exit(1);
}
ret = ptrace(PTRACE_KILL, pid, NULL, NULL);
if (ret == -1) {
perror("PTRACE_KILL");
exit(1);
}
return 0;
}
Test result:

hirofumi@devron (ptrace)[1111]$ ps ax|grep ptrace
688 tty1 S 0:00 grep ptrace
hirofumi@devron (ptrace)[1112]$ ls
ptrace ptrace.c
hirofumi@devron (ptrace)[1113]$ ./ptrace
hirofumi@devron (ptrace)[1114]$ ps ax|grep ptrace
691 tty1 R 0:04 ./ptrace
693 tty1 S 0:00 grep ptrace
hirofumi@devron (ptrace)[1115]$
Do I misunderstand something?
--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:15    [from the cache]
©2003-2011 Jasper Spaans. Advertise on this site