All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Tejun Heo <tj@kernel.org>,
	roland@redhat.com, linux-kernel@vger.kernel.org,
	torvalds@linux-foundation.org, akpm@linux-foundation.org
Subject: Re: [PATCHSET RFC] ptrace,signal: clean transition between STOPPED and TRACED
Date: Thu, 13 Jan 2011 16:51:20 +0100	[thread overview]
Message-ID: <20110113155120.GA31691@redhat.com> (raw)
In-Reply-To: <20110112214350.GC13830@host1.dyn.jankratochvil.net>

On 01/12, Jan Kratochvil wrote:
>
> FSF GDB for `T (stopped)' processes currently does:
>   PTRACE_ATTACH
>   check /proc/%d/status for `T (stopped)' (by GDB's pid_is_stopped)
>     if found then kill (PID, SIGSTOP) && ptrace (PTRACE_CONT, PID, 0, 0).
>   waitpid (pid, &status, 0) - so that this one does not get stuck if the stop
>                               event was already eaten out before.
>
> If the `T (stopped)' will now always FAIL then at leat the waitpid then should
> never get stuck.

I think it won't stuck. With this change the tracee always goes from
TASK_STOPPED to TASK_TRACED with the correct (and nonzero) stop code.

Btw, this should fix the case when ->exit_code was already consumed
by the previous debugger.


> FSF gdbserver --multi does PTRACE_ATTACH followed by waitpid (WNOHANG) and it
> fails if it returns ECHILD on the first try.

Not sure I understand... With or without this change waitpid()
shouldn't return ECHILD. But (again, with or without this change)
it can return 0 due to WNOHANG.

> 	ptrace(PTRACE_ATTACH, 22049, 0, 0)      = 0
> 	wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGSTOP}], WNOHANG, NULL) = 22049
>
> It may be also a gdbserver bug, though.

I do not know if this matters or not, but just in case...

gdb shouldn't assume the tracee will report SIGSTOP after attach.
Yes, PTRACE_ATTACH sends this signal implicitly, but the tracee can
dequeue and report another pending signal before SIGSTOP.

Oleg.


  parent reply	other threads:[~2011-01-13 16:00 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-24 14:00 [PATCHSET RFC] ptrace,signal: clean transition between STOPPED and TRACED Tejun Heo
2010-12-24 14:00 ` [PATCH 1/7] clone: kill CLONE_STOPPED Tejun Heo
2011-01-17 22:17   ` Roland McGrath
2011-01-27 13:13     ` Tejun Heo
2010-12-24 14:00 ` [PATCH 2/7] ptrace: add @why to ptrace_stop() Tejun Heo
2010-12-24 14:00 ` [PATCH 3/7] signal: fix premature completion of group stop when interfered by ptrace Tejun Heo
2010-12-24 14:00 ` [PATCH 4/7] signal: use GROUP_STOP_PENDING to stop once for a single group stop Tejun Heo
2010-12-24 14:00 ` [PATCH 5/7] ptrace: participate in group stop from ptrace_stop() iff the task is trapping for " Tejun Heo
2010-12-24 14:00 ` [PATCH 6/7] ptrace: make do_signal_stop() use ptrace_stop() if the task is being ptraced Tejun Heo
2010-12-24 14:00 ` [PATCH 7/7] ptrace: clean transitions between TASK_STOPPED and TRACED Tejun Heo
2011-01-05 16:35   ` Oleg Nesterov
2011-01-09 22:05     ` Tejun Heo
2011-01-13 16:03       ` Jan Kratochvil
2011-01-12 13:23 ` [PATCHSET RFC] ptrace,signal: clean transition between STOPPED " Tejun Heo
2011-01-12 18:10   ` Roland McGrath
2011-01-12 21:43 ` Jan Kratochvil
2011-01-13 15:05   ` Tejun Heo
2011-01-13 15:51   ` Oleg Nesterov [this message]
2011-01-18  2:11 ` Roland McGrath
2011-01-27 13:23   ` Tejun Heo
2011-01-28 21:06     ` Roland McGrath
2011-01-18  2:14 ` Roland McGrath
2011-01-27 15:46   ` Tejun Heo
2011-01-27 17:48     ` Tejun Heo
2011-01-28 20:40       ` Roland McGrath
2011-01-31 15:41         ` Tejun Heo
2011-01-31 15:54           ` Oleg Nesterov
2011-01-31 16:07             ` Tejun Heo
2011-02-01 10:35               ` Tejun Heo
2011-02-02  5:39           ` Roland McGrath

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=20110113155120.GA31691@redhat.com \
    --to=oleg@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=jan.kratochvil@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=roland@redhat.com \
    --cc=tj@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.