From: Pedro Alves <palves@redhat.com>
To: Yao Qi <qiyaoltc@gmail.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PATCH 7/9] Enqueue signal even when resuming threads
Date: Fri, 01 Jul 2016 16:55:00 -0000 [thread overview]
Message-ID: <4b9dce0a-023f-964c-77e4-85154d7087f2@redhat.com> (raw)
In-Reply-To: <CAH=s-PM38QRW2ofxiL3cBfb7UB_h1e=Lca82VLz-i3XUKZR3DA@mail.gmail.com>
On 07/01/2016 05:45 PM, Yao Qi wrote:
> You meant "after resuming it" rather than "before resuming it", right? We have
> two pending signals, so we resume the lwp and deliver the first signal. After
> resuming, we need to immediately deliver the second signal, so we call
> send_sigstop.
No, I really meant "before resuming it". We'd queue a SIGSTOP
in the kernel, and then resume the thread with
PTRACE_CONTINUE/STEP + signal. The idea being that the thread would
continue out of the signal delivery path in the kernel side with
the signal we resume it with, so if there's a signal handler,
it's what the kernel makes the thread execute as soon as it reaches
userspace. But given we had _also_ queued a SIGSTOP, the thread would
immediately report the SIGSTOP before it had a chance of executing the
first instruction of the handler. IOW, it'd report the SIGSTOP in
the first instruction of the handler, or where it was already
stopped before, if the signal signal passed to PTRACE_CONTINUE
is SIG_IGN.
Seeing the thread stop for a SIGSTOP that gdbserver had itself
sent, gdbserver would immediately re-resume the thread, this time,
with the other pending signal. This latter part probably already
works without any change. See tail end of linux_low_filter_event,
where we have:
if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SIGSTOP
&& child->stop_expected)
{
if (debug_threads)
debug_printf ("Expected stop.\n");
child->stop_expected = 0;
> IIUC, this patch is OK as-is, right?
>
Yes.
Thanks,
Pedro Alves
next prev parent reply other threads:[~2016-07-01 16:55 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-30 14:09 [PATCH 0/9 V3] Use reinsert breakpoint for vCont;s Yao Qi
2016-06-30 14:09 ` [PATCH 6/9] Use enqueue_pending_signal in linux_resume_one_thread Yao Qi
2016-06-30 14:09 ` [PATCH 2/9] Create sub classes of 'struct breakpoint' Yao Qi
2016-06-30 14:09 ` [PATCH 4/9] Make reinsert_breakpoint thread specific Yao Qi
2016-06-30 14:09 ` [PATCH 8/9] Use reinsert_breakpoint for vCont;s Yao Qi
2016-07-01 15:07 ` Pedro Alves
2016-07-05 8:15 ` Yao Qi
2016-07-21 8:38 ` Yao Qi
2016-07-21 10:02 ` Pedro Alves
2016-06-30 14:09 ` [PATCH 7/9] Enqueue signal even when resuming threads Yao Qi
2016-07-01 15:06 ` Pedro Alves
2016-07-01 16:45 ` Yao Qi
2016-07-01 16:55 ` Pedro Alves [this message]
2016-07-01 17:01 ` Pedro Alves
2016-06-30 14:09 ` [PATCH 9/9] Support vCont s and S actions with software single step Yao Qi
2016-06-30 14:09 ` [PATCH 3/9] Refactor clone_all_breakpoints Yao Qi
2016-06-30 14:09 ` [PATCH 1/9] Pass breakpoint type in set_breakpoint_at Yao Qi
2016-06-30 14:09 ` [PATCH 5/9] Switch current_thread to lwp's thread in install_software_single_step_breakpoints Yao Qi
2016-07-21 11:18 ` [PATCH 0/9 V3] Use reinsert breakpoint for vCont;s Yao Qi
2016-11-14 19:14 ` Antoine Tremblay
2016-11-21 12:08 ` Yao Qi
[not found] ` <wwok37ikrgmq.fsf@ericsson.com>
2016-11-23 19:03 ` Antoine Tremblay
2016-11-24 21:55 ` Yao Qi
2016-11-25 12:22 ` Antoine Tremblay
2016-11-25 13:13 ` Antoine Tremblay
2016-11-25 13:35 ` Antoine Tremblay
2016-11-25 13:44 ` Pedro Alves
2016-11-25 13:57 ` Antoine Tremblay
2016-11-25 14:28 ` Antoine Tremblay
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=4b9dce0a-023f-964c-77e4-85154d7087f2@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=qiyaoltc@gmail.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