Re: [PATCH 2/2] Enable range stepping for ARM on GDBServer

Pedro Alves
2016-08-31T17:50:34Z

On 08/31/2016 06:14 PM, Antoine Tremblay wrote:
> This patch enables range stepping to be done in GDBServer with an ARM
> target.
>
> There is one problem however with the gdb.threads/non-stop-fair-events.exp
> test.
>
> Since single stepping is done in software and that displaced stepping is
> not supported, threads end up hitting each others breakpoints and the main
> thread can't make any progress passed a number of threads on my system.
>
> Thus we get:
> FAIL: gdb.threads/non-stop-fair-events.exp: signal_thread=5: thread 1
> broke out of loop (timeout)
>
> Note that even letting it go an hour doesn't help so bumping the timeout
> is out of the question.
>
> I'm not sure what to do about this one ? kfail ? ideas ?

Hmm, this is exactly the sort of problem the test is meant to
catch, and the reason we do event thread randomization:

# Test that GDB in non-stop mode gives roughly equal priority to
# events of all threads.

Why does it work without range stepping, but not with?

E.g., back when we did:

commit 1ed415e2b9b985aac087c35949d0e1e489ab496d
Author: Pedro Alves <palves@redhat.com>
AuthorDate: Wed Sep 16 15:51:36 2015 +0100

non-stop-fair-events.exp slower on software single-step && !displ-step targets

On software single-step targets that don't support displaced stepping,
threads keep hitting each other's single-step breakpoints, and then
GDB needs to pause all threads to step past those. The end result is
that progress in the main thread will be slower and it may take a bit
longer for the signal to be queued. This patch bumps the timeout on
such targets.

gdb/testsuite/ChangeLog:
2015-09-16 Pedro Alves <palves@redhat.com>
Sandra Loosemore <sandra@codesourcery.com>
[...]

... the test always managed to complete on sss && !displ-step targets.

Thanks,
Pedro Alves