From: Tejun Heo <tj@kernel.org>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Denys Vlasenko <vda.linux@googlemail.com>,
Oleg Nesterov <oleg@redhat.com>,
linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
akpm@linux-foundation.org, indan@nul.nu
Subject: Re: PTRACE_DETACH without stop [Re: [PATCH 04/11] ptrace: implement PTRACE_INTERRUPT]
Date: Mon, 16 May 2011 11:01:25 +0200 [thread overview]
Message-ID: <20110516090125.GP23665@htj.dyndns.org> (raw)
In-Reply-To: <20110515173940.GA26241@host1.jankratochvil.net>
Hey,
On Sun, May 15, 2011 at 07:39:40PM +0200, Jan Kratochvil wrote:
> #include <unistd.h>
> #include <sys/wait.h>
> #include <sys/ptrace.h>
> #include <stdio.h>
> #include <stdlib.h>
> static int status;
> static pid_t child;
> void
> handler (int signo)
> {
> puts ("PASS");
> exit (0);
> }
> /* Ensure CHILD is stopped even if it is running now - for PTRACE_DETACH. */
> void
> stop_child_for_detach (void)
> {
> kill (child, SIGCONT); /* To be PTRACE_INTERRUPT in the future. */
> /* The problem - here a signal may get lost. */
> wait (&status);
> }
> int
> main (void)
> {
> child = fork ();
> switch (child)
> {
> case 0:
> signal (SIGUSR2, handler);
> ptrace (PTRACE_TRACEME, 0, NULL, NULL);
> raise (SIGUSR1);
> puts ("FAIL");
> exit (1);
> default:
> wait (&status);
> /* Sent by arbitrary external program. */
> kill (child, SIGUSR2);
> /* Comment out for PTRACE_DETACH not requiring stopped tracee. */
> #if 1
> ptrace (PTRACE_CONT, child, NULL, NULL);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can lose signal here. You must check which trap happened why and
then take action accordingly. Argh... we really need better
documentation of ptrace behaviors and traps. Anyways, sans the
confusion between debugger sent signals and signals from other sources
and the side effects caused by debugger sent ones, the current ptrace
interface isn't broken to the point where you just lose signal.
> stop_child_for_detach ();
> #endif
> ptrace (PTRACE_DETACH, child, NULL, NULL);
> }
> return 0;
> }
>
>
> > The reason why I'm reluctant to drop trapped requirement from both
> > SEIZE and DETACH is that removing those synchronization points opens
> > up a lot of corner cases.
>
> They are either (currently) in the userland or they would be in the kernel.
Nope. What userland is currently dealing with isn't that type of
conditions. It's dealing with nasty side effects of implied and
required signals, which will be removed with the new interface. Those
attach/detach sync points are currently in the kernel and wouldn't
change with the proposed updates. You're suggesting to remove them.
So, it's not about moving them, at all. It's about removing them.
That said, it might not be such a bad idea. Let's see how difficult
or easy it actually is.
Thanks.
--
tejun
next prev parent reply other threads:[~2011-05-16 9:01 UTC|newest]
Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-08 15:48 [PATCHSET ptrace] ptrace: implement PTRACE_SEIZE/INTERRUPT and group stop notification Tejun Heo
2011-05-08 15:48 ` [PATCH 01/11] job control: rename signal->group_stop and flags to jobctl and rearrange flags Tejun Heo
2011-05-08 15:48 ` [PATCH 02/11] ptrace: implement PTRACE_SEIZE Tejun Heo
2011-05-09 16:18 ` Oleg Nesterov
2011-05-10 9:46 ` Tejun Heo
2011-05-10 13:20 ` Oleg Nesterov
2011-05-10 13:47 ` Tejun Heo
2011-05-10 18:19 ` Oleg Nesterov
2011-05-15 15:56 ` PTRACE_SEIZE should not stop [Re: [PATCH 02/11] ptrace: implement PTRACE_SEIZE] Jan Kratochvil
2011-05-15 16:26 ` Tejun Heo
2011-05-15 17:15 ` Jan Kratochvil
2011-05-15 17:25 ` Tejun Heo
2011-05-15 19:48 ` Jan Kratochvil
2011-05-16 8:31 ` Tejun Heo
2011-05-16 12:26 ` Jan Kratochvil
2011-05-16 12:42 ` Tejun Heo
2011-05-16 13:03 ` Jan Kratochvil
2011-05-16 13:51 ` Tejun Heo
2011-05-16 13:21 ` Jan Kratochvil
2011-05-16 13:45 ` Tejun Heo
2011-05-16 13:48 ` Jan Kratochvil
2011-05-16 13:54 ` Tejun Heo
2011-05-08 15:48 ` [PATCH 03/11] ptrace: ptrace_check_attach(): rename @kill to @ignore_state and add comments Tejun Heo
2011-05-08 15:48 ` [PATCH 04/11] ptrace: implement PTRACE_INTERRUPT Tejun Heo
2011-05-08 21:58 ` Denys Vlasenko
2011-05-09 10:09 ` Tejun Heo
2011-05-09 10:55 ` Denys Vlasenko
2011-05-09 16:58 ` Oleg Nesterov
2011-05-10 9:50 ` Tejun Heo
2011-05-10 14:06 ` Oleg Nesterov
2011-05-10 14:20 ` Tejun Heo
2011-05-10 18:08 ` Oleg Nesterov
2011-05-11 8:29 ` Tejun Heo
2011-05-12 17:06 ` Oleg Nesterov
2011-05-12 17:21 ` Tejun Heo
2011-05-10 21:59 ` Denys Vlasenko
2011-05-11 9:19 ` Tejun Heo
2011-05-11 12:23 ` Denys Vlasenko
2011-05-11 13:22 ` Tejun Heo
2011-05-11 16:20 ` Bryan Donlan
2011-05-11 19:24 ` Tejun Heo
2011-05-15 16:10 ` PTRACE_DETACH without stop [Re: [PATCH 04/11] ptrace: implement PTRACE_INTERRUPT] Jan Kratochvil
2011-05-15 16:35 ` Tejun Heo
2011-05-15 17:39 ` Jan Kratochvil
2011-05-16 9:01 ` Tejun Heo [this message]
2011-05-16 12:08 ` Jan Kratochvil
2011-05-16 12:24 ` Tejun Heo
2011-05-08 15:48 ` [PATCH 05/11] ptrace: restructure ptrace_getsiginfo() Tejun Heo
2011-05-08 15:49 ` [PATCH 06/11] ptrace: make group stop state visible via PTRACE_GETSIGINFO Tejun Heo
2011-05-10 16:55 ` Oleg Nesterov
2011-05-10 17:11 ` Oleg Nesterov
2011-05-11 8:08 ` Tejun Heo
2011-05-12 16:47 ` Oleg Nesterov
2011-05-12 17:15 ` Tejun Heo
2011-05-08 15:49 ` [PATCH 07/11] ptrace: add JOBCTL_TRAPPED Tejun Heo
2011-05-08 15:49 ` [PATCH 08/11] ptrace: move fallback JOBCTL_TRAPPING clearing to get_signal_to_deliver() Tejun Heo
2011-05-11 15:48 ` Oleg Nesterov
2011-05-11 19:17 ` Tejun Heo
2011-05-12 15:40 ` Oleg Nesterov
2011-05-08 15:49 ` [PATCH 09/11] job control: reorganize wait_task_stopped() Tejun Heo
2011-05-11 15:48 ` Oleg Nesterov
2011-05-11 19:29 ` Tejun Heo
2011-05-12 15:42 ` Oleg Nesterov
2011-05-12 16:02 ` Tejun Heo
2011-05-12 17:25 ` Oleg Nesterov
2011-05-12 17:32 ` Tejun Heo
2011-05-12 17:33 ` Tejun Heo
2011-05-12 18:33 ` Oleg Nesterov
2011-05-13 8:46 ` Tejun Heo
2011-05-13 17:21 ` Oleg Nesterov
2011-05-14 10:56 ` Tejun Heo
2011-05-15 14:40 ` waitpid(WNOHANG) should report SIGCHLD-notified signals [Re: [PATCH 09/11] job control: reorganize wait_task_stopped()] Jan Kratochvil
2011-05-15 16:47 ` Tejun Heo
2011-05-15 17:01 ` Tejun Heo
2011-05-15 17:47 ` Jan Kratochvil
2011-05-16 9:13 ` Tejun Heo
2011-05-16 12:11 ` Jan Kratochvil
2011-05-16 12:27 ` Tejun Heo
2011-05-16 12:39 ` Jan Kratochvil
2011-05-16 12:46 ` Tejun Heo
2011-05-08 15:49 ` [PATCH 10/11] ptrace: move JOBCTL_TRAPPING wait to wait(2) and ptrace_check_attach() Tejun Heo
2011-05-11 16:49 ` Oleg Nesterov
2011-05-11 17:00 ` Oleg Nesterov
2011-05-11 19:45 ` Tejun Heo
2011-05-11 19:53 ` Tejun Heo
2011-05-12 10:23 ` Tejun Heo
2011-05-12 16:06 ` Oleg Nesterov
2011-05-12 15:59 ` Oleg Nesterov
2011-05-12 16:07 ` Tejun Heo
2011-05-12 18:20 ` Oleg Nesterov
2011-05-13 9:13 ` Tejun Heo
2011-05-13 18:34 ` Oleg Nesterov
2011-05-08 15:49 ` [PATCH 11/11] ptrace: implement group stop notification for ptracer Tejun Heo
2011-05-08 22:42 ` Denys Vlasenko
2011-05-09 10:10 ` Tejun Heo
2011-05-10 22:37 ` Denys Vlasenko
2011-05-11 9:05 ` Tejun Heo
2011-05-11 12:01 ` Denys Vlasenko
2011-05-11 13:13 ` Tejun Heo
2011-05-11 19:58 ` Oleg Nesterov
2011-05-11 20:18 ` Tejun Heo
2011-05-11 20:21 ` Tejun Heo
2011-05-12 10:24 ` Tejun Heo
2011-05-15 14:02 ` getter PTRACE_GETSIGINFO should not modify anything [Re: [PATCH 11/11] ptrace: implement group stop notification for ptracer] Jan Kratochvil
2011-05-15 14:28 ` Tejun Heo
2011-05-15 17:17 ` Jan Kratochvil
2011-05-15 17:28 ` Tejun Heo
2011-05-15 20:06 ` Jan Kratochvil
2011-05-16 8:43 ` Tejun Heo
2011-05-16 12:17 ` Jan Kratochvil
2011-05-16 12:56 ` Tejun Heo
2011-05-16 13:00 ` Ingo Molnar
2011-05-08 22:27 ` [PATCHSET ptrace] ptrace: implement PTRACE_SEIZE/INTERRUPT and group stop notification Denys Vlasenko
2011-05-09 9:48 ` Tejun Heo
2011-05-15 13:55 ` ptrace-testsuite status [Re: [PATCHSET ptrace] ptrace: implement PTRACE_SEIZE/INTERRUPT and group stop notification] Jan Kratochvil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110516090125.GP23665@htj.dyndns.org \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=indan@nul.nu \
--cc=jan.kratochvil@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=torvalds@linux-foundation.org \
--cc=vda.linux@googlemail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).