From: Pedro Alves <pedro@codesourcery.com>
To: gdb-patches@sourceware.org
Cc: "John David Anglin" <dave@hiauly1.hia.nrc.ca>
Subject: Re: ttrace: Protocal error
Date: Sat, 09 Aug 2008 22:48:00 -0000 [thread overview]
Message-ID: <200808092348.11721.pedro@codesourcery.com> (raw)
In-Reply-To: <200808091551.17013.pedro@codesourcery.com>
[-- Attachment #1: Type: text/plain, Size: 660 bytes --]
On Saturday 09 August 2008 15:51:16, Pedro Alves wrote:
> Also, when we detect a TTEVT_LWP_CREATE, TTEVT_LWP_EXIT or
> TTEVT_LWP_TERMINATE, The ttrace docs indicate that only one lwp is
> stopped. There's no reason to stop all lwps, and return
> TARGET_WAITKING_SPURIOUS, only to resume all lwps again.
> This just adds overhead and messes more with the
> scheduling of the inferior than needed. We could just resume
> the stopped lwp, and return TARGET_WAITKIND_IGNORE.
Here's a patch to do this. It applies on top of the other I just sent,
which itself applied on top of my other patch to always register
the main thread.
--
Pedro Alves
[-- Attachment #2: fix_daves_bug_part_2.diff --]
[-- Type: text/x-diff, Size: 2720 bytes --]
2008-08-09 Pedro Alves <pedro@codesourcery.com>
* inf-ttrace.c (inf_ttrace_wait): On TTEVT_LWP_CREATE and
LWP_TERMINATE, resume the caller thread. On TTEVT_LWP_CREATE,
TTEVT_LWP_EXIT and TTEVT_LWP_TERMINATE, don't stop the whole
process, and return TARGET_WAITKIND_IGNORE.
---
gdb/inf-ttrace.c | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
Index: src/gdb/inf-ttrace.c
===================================================================
--- src.orig/gdb/inf-ttrace.c 2008-08-09 23:15:40.000000000 +0100
+++ src/gdb/inf-ttrace.c 2008-08-09 23:15:53.000000000 +0100
@@ -1041,7 +1041,12 @@ inf_ttrace_wait (ptid_t ptid, struct tar
sizeof (struct inf_ttrace_private_thread_info));
inf_ttrace_num_lwps++;
ptid = ptid_build (tts.tts_pid, tts.tts_lwpid, 0);
- break;
+ /* Let the lwp_create-caller thread continue. */
+ ttrace (TT_LWP_CONTINUE, ptid_get_pid (ptid),
+ ptid_get_lwp (ptid), TT_NOPC, 0, 0);
+ /* Return without stopping the whole process. */
+ ourstatus->kind = TARGET_WAITKIND_IGNORE;
+ return ptid;
case TTEVT_LWP_EXIT:
if (print_thread_events)
@@ -1050,22 +1055,31 @@ inf_ttrace_wait (ptid_t ptid, struct tar
gdb_assert (ti != NULL);
((struct inf_ttrace_private_thread_info *)ti->private)->dying = 1;
inf_ttrace_num_lwps--;
+ /* Let the thread really exit. */
ttrace (TT_LWP_CONTINUE, ptid_get_pid (ptid),
ptid_get_lwp (ptid), TT_NOPC, 0, 0);
- /* If we don't return -1 here, core GDB will re-add the thread. */
- ptid = minus_one_ptid;
- break;
+ /* Return without stopping the whole process. */
+ ourstatus->kind = TARGET_WAITKIND_IGNORE;
+ return ptid;
case TTEVT_LWP_TERMINATE:
lwpid = tts.tts_u.tts_thread.tts_target_lwpid;
ptid = ptid_build (tts.tts_pid, lwpid, 0);
- printf_filtered(_("[%s has been terminated]\n"), target_pid_to_str (ptid));
+ if (print_thread_events)
+ printf_unfiltered(_("[%s has been terminated]\n")
+ target_pid_to_str (ptid));
ti = find_thread_pid (ptid);
gdb_assert (ti != NULL);
((struct inf_ttrace_private_thread_info *)ti->private)->dying = 1;
inf_ttrace_num_lwps--;
+
+ /* Resume the lwp_terminate-caller thread. */
ptid = ptid_build (tts.tts_pid, tts.tts_lwpid, 0);
- break;
+ ttrace (TT_LWP_CONTINUE, ptid_get_pid (ptid),
+ ptid_get_lwp (ptid), TT_NOPC, 0, 0);
+ /* Return without stopping the whole process. */
+ ourstatus->kind = TARGET_WAITKIND_IGNORE;
+ return ptid;
case TTEVT_SIGNAL:
ourstatus->kind = TARGET_WAITKIND_STOPPED;
next prev parent reply other threads:[~2008-08-09 22:48 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-10 0:30 [RFA] patch to add 'maint profile-gdb' command Jason Molenda
2001-09-10 8:48 ` Andrew Cagney
2001-09-10 8:58 ` Eli Zaretskii
2001-09-10 9:04 ` Andrew Cagney
2001-09-10 11:52 ` Jason Molenda
2001-09-10 13:43 ` Eli Zaretskii
2001-09-10 13:59 ` Jason Molenda
2001-09-11 0:38 ` Eli Zaretskii
[not found] ` <no.id>
1999-06-15 20:10 ` Missing routines: gdb/top.c John David Anglin
2001-09-11 1:37 ` [RFA] patch to add 'maint profile-gdb' command Jason Molenda
2001-09-11 1:57 ` Eli Zaretskii
2001-09-12 0:00 ` Jason Molenda
2001-09-12 6:00 ` Eli Zaretskii
2001-09-12 7:42 ` Jason Molenda
2001-09-12 9:06 ` Eli Zaretskii
2001-09-12 11:58 ` Tom Tromey
2001-09-12 13:16 ` Jason Molenda
2008-08-06 19:24 ` [patch] Don't set DT_HP_DEBUG_PRIVATE in solib-pa64.c John David Anglin
2008-08-06 19:49 ` Mark Kettenis
2008-08-06 20:09 ` John David Anglin
2008-08-06 23:10 ` John David Anglin
2008-08-07 21:39 ` [patch] Only force private mapping of shared libraries in solib-som.c on HP-UX 10 and earlier John David Anglin
2008-08-08 10:48 ` Joel Brobecker
2008-08-08 15:34 ` John David Anglin
2008-08-09 14:37 ` Joel Brobecker
2008-08-09 18:59 ` John David Anglin
2008-08-08 19:30 ` ttrace: Protocal error John David Anglin
2008-08-08 20:16 ` John David Anglin
2008-08-09 14:52 ` Pedro Alves
2008-08-09 15:34 ` John David Anglin
2008-08-09 18:49 ` John David Anglin
2008-08-09 22:45 ` Pedro Alves
2008-08-09 22:46 ` Pedro Alves
2008-08-09 22:51 ` Pedro Alves
2008-08-09 23:19 ` John David Anglin
2008-08-09 22:48 ` Pedro Alves [this message]
2008-08-09 14:53 ` Joel Brobecker
2008-08-09 23:40 ` John David Anglin
2008-08-10 0:46 ` [4/7] Adjust the ttrace target (HP-UX) to always register the John David Anglin
2008-09-15 2:08 ` [PATCH] Fix dwarf register column to gdb register mapping John David Anglin
2008-09-15 2:24 ` [PATCH] Fix hppa_linux_sigtramp_frame_unwind_cache John David Anglin
2001-09-12 11:28 ` [RFA] patch to add 'maint profile-gdb' command Andrew Cagney
2001-09-12 11:43 ` Andrew Cagney
2001-09-16 17:45 ` [RFA] Version 2 of " Jason Molenda
2001-09-17 22:39 ` Andrew Cagney
2001-09-18 17:52 ` Fernando Nasser
2001-09-18 17:56 ` Andrew Cagney
2001-09-19 7:11 ` Fernando Nasser
2001-09-19 7:28 ` Eli Zaretskii
2001-09-19 9:29 ` Fernando Nasser
2001-09-19 11:30 ` Eli Zaretskii
2001-09-19 11:41 ` Andrew Cagney
2001-09-19 11:53 ` Kevin Buettner
[not found] ` <200109170536.HAA21988@is.elta.co.il>
2001-09-17 15:08 ` Michael Snyder
2001-09-17 22:43 ` Andrew Cagney
2001-09-17 23:59 ` Eli Zaretskii
2001-09-24 13:33 ` Jason Molenda
2001-09-24 14:41 ` Andrew Cagney
2001-09-24 14:58 ` Eli Zaretskii
2001-09-24 15:13 ` Andrew Cagney
2001-09-24 14:53 ` Eli Zaretskii
2008-08-08 17:24 [4/7] Adjust the ttrace target (HP-UX) to always register the main thread Pedro Alves
2008-08-08 18:34 ` ttrace: Protocal error John David Anglin
2008-08-08 20:02 ` Pedro Alves
2008-08-08 20:49 ` John David Anglin
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=200808092348.11721.pedro@codesourcery.com \
--to=pedro@codesourcery.com \
--cc=dave@hiauly1.hia.nrc.ca \
--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