[PATCH 00/12] Fix detach + displaced-step regression + N bugs more
Pedro Alves
pedro@palves.net
Wed Jan 13 01:15:31 GMT 2021
I noticed that the "detach" command while the inferior is running
recently regressed -- the inferior crashes with SIGTRAP if it happens
to be detached just while it is doing a displaced step. The fix
looked very simple, it's just a reversed condition, so I fixed it, and
wrote a testcase. That's then the trouble started -- the testcase
exposed a TON of other issues, of the "stare at infrun and gdbserver
logs for days" kind... I would set the testcase running in a loop,
and then once in a while, puuft, a new racy bug would trigger.
This fixes all the bugs I ran into. I won't be surprised if the
testcase still manages to expose some more racy problems. But I did
leave it running for hours at time on my machine more than once, like
this:
$ (set -e; while true; do \
make check TESTS="gdb.threads/detach-step-over.exp" RUNTESTFLAGS="--target_board=native-extended-gdbserver"; \
make check TESTS="gdb.threads/detach-step-over.exp"; \
done)
and nothing showed up.
For your convenience, I've pushed this to the
users/palves/detach-step-over branch.
Pedro Alves (12):
Fix attaching in non-stop mode
Fix "target extended-remote" + "maint set target-non-stop" + "attach"
Testcase for attaching in non-stop mode
Fix a couple vStopped pending ack bugs
gdbserver: spurious SIGTRAP w/ detach while step-over in progress
Factor out after-stop event handling code from stop_all_threads
prepare_for_detach: don't release scoped_restore at the end
prepare_for_detach and ongoing displaced stepping
detach and breakpoint removal
detach with in-line step over in progress
detach in all-stop with threads running
Testcase for detaching while stepping over breakpoint
gdb/infcmd.c | 13 +
gdb/infrun.c | 640 ++++++++++--------
gdb/infrun.h | 4 +
gdb/linux-nat.c | 5 +
gdb/remote.c | 39 +-
gdb/target.c | 9 -
gdb/testsuite/gdb.threads/attach-non-stop.c | 58 ++
gdb/testsuite/gdb.threads/attach-non-stop.exp | 149 ++++
gdb/testsuite/gdb.threads/detach-step-over.c | 112 +++
.../gdb.threads/detach-step-over.exp | 290 ++++++++
gdbserver/linux-low.cc | 29 +-
gdbserver/server.cc | 9 +
12 files changed, 1072 insertions(+), 285 deletions(-)
create mode 100644 gdb/testsuite/gdb.threads/attach-non-stop.c
create mode 100644 gdb/testsuite/gdb.threads/attach-non-stop.exp
create mode 100644 gdb/testsuite/gdb.threads/detach-step-over.c
create mode 100644 gdb/testsuite/gdb.threads/detach-step-over.exp
base-commit: bfc7d04afbeb56a3dc3caa71322a71fbb084d5dd
--
2.26.2
More information about the Gdb-patches
mailing list