From: John Baldwin <jhb@FreeBSD.org>
To: gdb-patches@sourceware.org
Subject: [PATCH v2] PR threads/20743: Don't attempt to suspend or resume exited threads.
Date: Tue, 04 Apr 2017 17:33:00 -0000 [thread overview]
Message-ID: <20170404173258.6512-1-jhb@FreeBSD.org> (raw)
When resuming a native FreeBSD process, ignore exited threads when
suspending/resuming individual threads prior to continuing the process.
gdb/ChangeLog:
PR threads/20743
* fbsd-nat.c (resume_one_thread_cb): Remove.
(resume_all_threads_cb): Remove.
(fbsd_resume): Use ALL_NON_EXITED_THREADS instead of
iterate_over_threads.
---
gdb/ChangeLog | 8 ++++++++
gdb/fbsd-nat.c | 60 +++++++++++++++++++++++++---------------------------------
2 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fc8dbe18da..a1927f5e2e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2017-04-04 John Baldwin <jhb@FreeBSD.org>
+
+ PR threads/20743
+ * fbsd-nat.c (resume_one_thread_cb): Remove.
+ (resume_all_threads_cb): Remove.
+ (fbsd_resume): Use ALL_NON_EXITED_THREADS instead of
+ iterate_over_threads.
+
2017-04-04 Simon Marchi <simon.marchi@polymtl.ca>
* remote.c (set_general_thread, set_continue_thread): Use ptid_t
diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
index d99f436070..f80a47ba42 100644
--- a/gdb/fbsd-nat.c
+++ b/gdb/fbsd-nat.c
@@ -653,38 +653,6 @@ fbsd_next_vfork_done (void)
#endif
#endif
-static int
-resume_one_thread_cb (struct thread_info *tp, void *data)
-{
- ptid_t *ptid = (ptid_t *) data;
- int request;
-
- if (ptid_get_pid (tp->ptid) != ptid_get_pid (*ptid))
- return 0;
-
- if (ptid_get_lwp (tp->ptid) == ptid_get_lwp (*ptid))
- request = PT_RESUME;
- else
- request = PT_SUSPEND;
-
- if (ptrace (request, ptid_get_lwp (tp->ptid), NULL, 0) == -1)
- perror_with_name (("ptrace"));
- return 0;
-}
-
-static int
-resume_all_threads_cb (struct thread_info *tp, void *data)
-{
- ptid_t *filter = (ptid_t *) data;
-
- if (!ptid_match (tp->ptid, *filter))
- return 0;
-
- if (ptrace (PT_RESUME, ptid_get_lwp (tp->ptid), NULL, 0) == -1)
- perror_with_name (("ptrace"));
- return 0;
-}
-
/* Implement the "to_resume" target_ops method. */
static void
@@ -711,13 +679,37 @@ fbsd_resume (struct target_ops *ops,
if (ptid_lwp_p (ptid))
{
/* If ptid is a specific LWP, suspend all other LWPs in the process. */
- iterate_over_threads (resume_one_thread_cb, &ptid);
+ struct thread_info *tp;
+ int request;
+
+ ALL_NON_EXITED_THREADS (tp)
+ {
+ if (ptid_get_pid (tp->ptid) != ptid_get_pid (ptid))
+ continue;
+
+ if (ptid_get_lwp (tp->ptid) == ptid_get_lwp (ptid))
+ request = PT_RESUME;
+ else
+ request = PT_SUSPEND;
+
+ if (ptrace (request, ptid_get_lwp (tp->ptid), NULL, 0) == -1)
+ perror_with_name (("ptrace"));
+ }
}
else
{
/* If ptid is a wildcard, resume all matching threads (they won't run
until the process is continued however). */
- iterate_over_threads (resume_all_threads_cb, &ptid);
+ struct thread_info *tp;
+
+ ALL_NON_EXITED_THREADS (tp)
+ {
+ if (!ptid_match (tp->ptid, ptid))
+ continue;
+
+ if (ptrace (PT_RESUME, ptid_get_lwp (tp->ptid), NULL, 0) == -1)
+ perror_with_name (("ptrace"));
+ }
ptid = inferior_ptid;
}
super_resume (ops, ptid, step, signo);
--
2.11.0
next reply other threads:[~2017-04-04 17:33 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-04 17:33 John Baldwin [this message]
2017-04-11 18:43 ` John Baldwin
2017-04-12 18:12 ` Luis Machado
2017-04-14 22:40 ` John Baldwin
2017-04-15 1:01 ` Luis Machado
2017-04-17 18:27 ` John Baldwin
2017-04-17 18:32 ` Luis Machado
2017-04-18 14:27 ` Simon Marchi
2017-04-18 14:29 ` Simon Marchi
2017-04-18 14:58 ` Pedro Alves
2017-04-18 16:53 ` John Baldwin
2017-04-18 11:33 ` 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=20170404173258.6512-1-jhb@FreeBSD.org \
--to=jhb@freebsd.org \
--cc=gdb-patches@sourceware.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox