On 10/10, Jan Kratochvil wrote:
>
> On Sat, 10 Oct 2009 18:17:12 +0200, Oleg Nesterov wrote:
> > Roland, Jan, what user-space expects ptrace(DETACH, SIGKILL) should do?
> >
> > My guess: this should really kill the tracee asap, hence this patch.
>
> attached testcase works for me on both:
> kernel-2.6.31.1-48.fc12.x86_64
> kernel-2.6.30.5-43.fc11.x86_64
>
> does it FAIL for you to make it worth to the testsuite?

The changelog is not very clear, sorry.

Sure ptrace(DETACH, SIGKILL) works. Because currently detach always
wakes up the tracee. This should be fixed later, detach shouldn't
break the group-stop logic.

So, the point of this patch is: even we the tracee should be leaved
in TASK_STOPPED state, or we have another tracer which wants this
tracee to be stopped, SIGKILL must work and kille the tracee.

>   child = fork ();
>   switch (child)
>     {
>     case -1:
>       assert_perror (errno);
>
>     case 0:
>       l = ptrace (PTRACE_TRACEME, 0, NULL, NULL);
>       assert (l == 0);
>
>       raise (SIGUSR1);
>       _exit (42);
>
>     default:
>       break;
>     }
>
>   got_pid = waitpid (child, &status, 0);
>   assert (got_pid == child);
>   assert (WIFSTOPPED (status));
>   assert (WSTOPSIG (status) == SIGUSR1);
>
>   errno = 0;
>   l = ptrace (PTRACE_DETACH, child, NULL, (void *) (long) SIGKILL);
>   assert_perror (errno);
>   assert (l == 0);
>
>   got_pid = waitpid (child, &status, 0);
>   assert (got_pid == child);
>   assert (WIFSIGNALED (status));
>   assert (WTERMSIG (status) == SIGKILL);

I don't think this test-case is "interesting" in its current form.
It can't prove SIGKILL does something special, and I think currently
we can't test this.

Oleg.

Reply via email to