From: Daniel Jacobowitz <drow@false.org>
To: gdb-patches@sources.redhat.com
Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Subject: [patch] Fix handle_inferior_event nostop signal handling for threads
Date: Fri, 19 Mar 2004 00:09:00 -0000 [thread overview]
Message-ID: <20040307010654.GA10796@nevyn.them.org> (raw)
Message-ID: <20040319000900.FQPW9RbWRMClsjstNYySaqkIVRW8P_DsECCy0aQXwAo@z> (raw)
Atsushi-san, could you verify that this patch still fixes your problem?
I took a look at the #if 0 block, and that made me look at the surrounding
code; I don't believe that a bit of it is necessary. If we switch "current"
threads in response to this event, then all the following bits of
handle_inferior_event should handle the current thread correctly.
If this works for you I'll commit it to HEAD. I'm not sure if it's safe for
the branch. No regressions on native i686-linux, and it fixes a quirk that
the previous patch I sent you introduced (we could sometimes fail to print
about a pass/print/nostop signal).
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2004-03-06 Daniel Jacobowitz <drow@mvista.com>
* infrun.c (handle_inferior_event): Remove short-circuit code for
events in a different thread.
Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.138
diff -u -p -r1.138 infrun.c
--- infrun.c 6 Mar 2004 00:10:06 -0000 1.138
+++ infrun.c 7 Mar 2004 00:31:51 -0000
@@ -1883,61 +1883,9 @@ handle_inferior_event (struct execution_
ecs->random_signal = 1;
/* See if something interesting happened to the non-current thread. If
- so, then switch to that thread, and eventually give control back to
- the user.
-
- Note that if there's any kind of pending follow (i.e., of a fork,
- vfork or exec), we don't want to do this now. Rather, we'll let
- the next resume handle it. */
- if (!ptid_equal (ecs->ptid, inferior_ptid) &&
- (pending_follow.kind == TARGET_WAITKIND_SPURIOUS))
+ so, then switch to that thread. */
+ if (!ptid_equal (ecs->ptid, inferior_ptid))
{
- int printed = 0;
-
- /* If it's a random signal for a non-current thread, notify user
- if he's expressed an interest. */
- if (ecs->random_signal && signal_print[stop_signal])
- {
-/* ??rehrauer: I don't understand the rationale for this code. If the
- inferior will stop as a result of this signal, then the act of handling
- the stop ought to print a message that's couches the stoppage in user
- terms, e.g., "Stopped for breakpoint/watchpoint". If the inferior
- won't stop as a result of the signal -- i.e., if the signal is merely
- a side-effect of something GDB's doing "under the covers" for the
- user, such as stepping threads over a breakpoint they shouldn't stop
- for -- then the message seems to be a serious annoyance at best.
-
- For now, remove the message altogether. */
-#if 0
- printed = 1;
- target_terminal_ours_for_output ();
- printf_filtered ("\nProgram received signal %s, %s.\n",
- target_signal_to_name (stop_signal),
- target_signal_to_string (stop_signal));
- gdb_flush (gdb_stdout);
-#endif
- }
-
- /* If it's not SIGTRAP and not a signal we want to stop for, then
- continue the thread. */
-
- if (stop_signal != TARGET_SIGNAL_TRAP && !signal_stop[stop_signal])
- {
- if (printed)
- target_terminal_inferior ();
-
- /* Clear the signal if it should not be passed. */
- if (signal_program[stop_signal] == 0)
- stop_signal = TARGET_SIGNAL_0;
-
- target_resume (ecs->ptid, 0, stop_signal);
- prepare_to_wait (ecs);
- return;
- }
-
- /* It's a SIGTRAP or a signal we're interested in. Switch threads,
- and fall into the rest of wait_for_inferior(). */
-
context_switch (ecs);
if (context_hook)
next reply other threads:[~2004-03-07 1:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-07 1:06 Daniel Jacobowitz [this message]
2004-03-07 14:14 ` Atsushi Nemoto
2004-03-19 0:09 ` Atsushi Nemoto
2004-03-09 16:41 ` Daniel Jacobowitz
2004-03-10 1:28 ` Atsushi Nemoto
2004-03-19 0:09 ` Atsushi Nemoto
2004-03-19 0:09 ` Daniel Jacobowitz
2004-03-10 2:57 ` Daniel Jacobowitz
2004-03-19 0:09 ` Daniel Jacobowitz
2004-03-19 0:09 ` Daniel Jacobowitz
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=20040307010654.GA10796@nevyn.them.org \
--to=drow@false.org \
--cc=anemo@mba.ocn.ne.jp \
--cc=gdb-patches@sources.redhat.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