Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Yao Qi <qiyaoltc@gmail.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v3 09/17] Teach non-stop to do in-line step-overs (stop all, step, restart)
Date: Wed, 22 Apr 2015 20:03:00 -0000	[thread overview]
Message-ID: <5537FE7F.8050007@redhat.com> (raw)
In-Reply-To: <86tww9y18h.fsf@gmail.com>

On 04/21/2015 04:01 PM, Yao Qi wrote:
> Pedro Alves <palves@redhat.com> writes:
> 
>> -	 that adjust_pc_after_break doesn't end up confused.  */
>> -      gdb_assert (sig != GDB_SIGNAL_0);
>> +	 that adjust_pc_after_break doesn't end up confused.
>> +
>> +         - In non-stop if we insert a breakpoint (e.g., a step-resume)
>> +	 in one thread after another thread that was stepping had been
>> +	 momentarily paused for a step-over.  When we re-resume the
>> +	 stepping thread, it may be resumed from that address with a
>> +	 breakpoint that hasn't trapped yet.  Seen with
>> +	 gdb.threads/non-stop-fair-events.exp, on targets that don't
>> +	 do displaced stepping.  */
> 
> Does this comment mean the sequence like this?
> 
>  thread B is paused,
>  a breakpoint is inserted at address PC for thread C,
>  thread B may be resumed from address PC

Yep.  In that case, we should _not_ step over the breakpoint,
as thread B has not reported that breakpoint event.  Detecting the
case and reporting the breakpoint immediately without actually
resuming isn't correct, as in that case we'd lose the signal.
It's just simpler to let the breakpoint trap.

> 
>>  
>> +/* Select a thread at random, out of those which are resumed and have
>> +   had events.  */
>> +
>> +static struct thread_info *
>> +random_pending_event_thread (ptid_t waiton_ptid)
>> +{
> 
> If GDB core knows select events at random, then we don't have to do
> something similar in linux-nat.c:select_event_lwp, right?
> 

I think so, yes.  Though I'd rather leave it be for a while,
so that the "maint set target-non-stop off" fallback option
is fully functional as backup plan.  In the long term, if we manage
to merge linux-nat.c and gdbserver/linux-low.c, the resulting
code will still need it as long as we'd like to support gdbserver
connected to a gdb that doesn't force non-stop mode though, and,
probably as long as gdbserver's own step-over-breakpoints/tracepoints
implementation is baked in the backend too.  :-/

Thanks,
Pedro Alves


  reply	other threads:[~2015-04-22 20:03 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-17 10:47 [PATCH v3 00/23] All-stop on top of non-stop Pedro Alves
2015-04-17 10:45 ` [PATCH v3 05/17] Embed the pending step-over chain in thread_info objects Pedro Alves
2015-04-21  8:28   ` Yao Qi
2015-04-22 20:14     ` Pedro Alves
2015-04-21  9:53   ` Yao Qi
2015-04-22 19:07     ` Pedro Alves
2015-04-22  4:25   ` Doug Evans
2015-04-22 22:19     ` Pedro Alves
2015-04-17 10:45 ` [PATCH v3 11/17] Fix signal-while-stepping-over-bp-other-thread.exp on targets always in non-stop Pedro Alves
2015-04-17 10:45 ` [PATCH v3 04/17] Make thread_still_needs_step_over consider stepping_over_watchpoint too Pedro Alves
2015-04-17 10:45 ` [PATCH v3 02/17] Change adjust_pc_after_break's prototype Pedro Alves
2015-04-17 10:45 ` [PATCH v3 03/17] remote.c/all-stop: Implement TARGET_WAITKIND_NO_RESUMED and TARGET_WNOHANG Pedro Alves
2015-04-17 10:45 ` [PATCH v3 15/17] PPC64: Fix gdb.arch/ppc64-atomic-inst.exp with displaced stepping Pedro Alves
2015-04-21 11:21   ` Yao Qi
2015-04-22 20:04     ` Pedro Alves
2015-04-17 10:45 ` [PATCH v3 08/17] Factor out code to re-resume stepped thread Pedro Alves
2015-04-17 10:45 ` [PATCH v3 06/17] Use keep_going in proceed and start_step_over too Pedro Alves
2015-04-22  5:09   ` Doug Evans
2015-04-22 22:22     ` Pedro Alves
2015-04-17 10:45 ` [PATCH v3 13/17] Fix step-over-{trips-on-watchpoint|lands-on-breakpoint}.exp race Pedro Alves
2015-04-17 10:47 ` [PATCH v3 01/17] Fix and test "checkpoint" in non-stop mode Pedro Alves
2015-04-21  2:36   ` Doug Evans
2015-04-22 17:48     ` Pedro Alves
2015-04-28 18:18       ` Doug Evans
2015-04-29  4:56         ` Doug Evans
2015-05-19 18:08           ` Pedro Alves
2015-04-17 10:47 ` [PATCH v3 07/17] Misc switch_back_to_stepped_thread cleanups Pedro Alves
2015-04-21  9:50   ` Yao Qi
2015-04-22 20:04     ` Pedro Alves
2015-04-22  5:23   ` Doug Evans
2015-04-22 20:05     ` Pedro Alves
2015-04-28 20:28       ` Doug Evans
2015-04-17 10:47 ` [PATCH v3 17/17] native Linux: enable always non-stop by default Pedro Alves
2015-04-17 10:52 ` [PATCH v3 09/17] Teach non-stop to do in-line step-overs (stop all, step, restart) Pedro Alves
2015-04-17 11:01   ` Pedro Alves
2015-04-21 15:01   ` Yao Qi
2015-04-22 20:03     ` Pedro Alves [this message]
2015-04-24  9:06       ` Yao Qi
2015-04-27 20:17   ` Doug Evans
2015-05-19 18:09     ` Pedro Alves
2015-05-19 18:49       ` Pedro Alves
2015-04-17 10:52 ` [PATCH v3 12/17] Fix interrupt-noterm.exp on targets always in non-stop Pedro Alves
2015-04-21 11:40   ` Yao Qi
2015-04-22 20:03     ` Pedro Alves
2015-04-17 10:56 ` [PATCH v3 14/17] Disable displaced stepping if trying it fails Pedro Alves
2015-04-17 11:06 ` [PATCH v3 16/17] S/390: displaced stepping and PC-relative RIL-b/RIL-c instructions Pedro Alves
2015-04-17 11:38 ` [PATCH v3 10/17] Implement all-stop on top of a target running non-stop mode Pedro Alves
2015-04-21 11:09   ` Yao Qi
2015-04-22 20:16     ` Pedro Alves
2015-04-24  7:39       ` Yao Qi
2015-05-19 18:08         ` Pedro Alves
2015-05-21  9:17           ` Yao Qi
2015-04-20 12:02 ` [PATCH v3 00/23] All-stop on top of non-stop Yao Qi
2015-04-20 16:54   ` Sergio Durigan Junior
     [not found]     ` <553526D0.9030802@redhat.com>
2015-04-21  7:48       ` Yao Qi
2015-04-21 15:05         ` Yao Qi
2015-04-22 22:27           ` Pedro Alves
2015-04-20 17:35 ` Simon Marchi
2015-05-19 18:14   ` Pedro Alves
2015-05-22 19:39 [PATCH v3 09/17] Teach non-stop to do in-line step-overs (stop all, step, restart) Doug Evans
2015-05-23 15:29 ` Pedro Alves

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=5537FE7F.8050007@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