Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: John Baldwin <jhb@FreeBSD.org>
To: Eli Zaretskii <eliz@gnu.org>, Pedro Alves <pedro@palves.net>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 00/17] Interrupting programs that block/ignore SIGINT
Date: Tue, 15 Jun 2021 08:50:18 -0700	[thread overview]
Message-ID: <c1679ecb-497e-f2d1-879c-287e5dea3953@FreeBSD.org> (raw)
In-Reply-To: <83tulz48yr.fsf@gnu.org>

On 6/15/21 5:18 AM, Eli Zaretskii via Gdb-patches wrote:
>> From: Pedro Alves <pedro@palves.net>
>> Cc: gdb-patches@sourceware.org
>> Date: Mon, 14 Jun 2021 18:55:17 +0100
>>
>> On 2021-06-03 8:51 p.m., Eli Zaretskii wrote:
>>>> From: Pedro Alves <pedro@palves.net>
>>>> Date: Thu,  3 Jun 2021 20:02:26 +0100
>>>>
>>>> Currently, on GNU/Linux, it is not possible to interrupt with Ctrl-C
>>>> programs that block or ignore SIGINT, with e.g., sigprocmask or
>>>> signal(SIGINT, SIG_IGN).  You type Ctrl-C, but nothing happens.
>>>
>>> I'm not sure I understand why this is a problem.  If a debuggee blocks
>>> or ignores SIGINT, then SIGINT cannot be used to stop it, neither when
>>> it runs outside the debugger nor when it runs under a debugger.  There
>>> are enough other methods to stop such a debuggee (e.g., send it a
>>> different signal), but basically such a program clearly tells that it
>>> doesn't want to be interrupted by SIGINT, period.
>>
>> It sounds like you're taking the view that Ctrl-C should be seen by the
>> inferior first, and behave exactly as if you were not debugging
>> the program?
>>
>> My view is that, as a user, I see Ctrl-C as the standard way across configurations
>> to interrupt programs so I can inspect them.  When I type Ctrl-C, I'm telling
>> GDB that I want to stop the program.
> 
> Actually, my original problem was caused by your use of "interrupt a
> program", when what you actually meant (AFAIU now) was "stop the
> program".  This was what originally set me off: the above text you
> posted as the preamble for your patch reads like it's saying that
> something is wrong with the situation where programs that don't want
> to be interrupted by Ctrl-C can't be interrupted by SIGINT under GDB.
> Thus my reaction.
> 
> However, thinking about the issue some more, now that I understand
> what you meant, I do indeed think that programs which block or ignore
> SIGINT should not be stopped by Ctrl-C under GDB.  The reason is
> simple: SIGINT is just another fatal signal.  Any fatal signal
> delivered to a program being debugged will not stop the program if the
> program blocks or ignores that signal, right?  So why should SIGINT be
> special?
> 
> IOW, Are you sure your expectations are not based on old habits, where
> "normally" Ctrl-C can be used to stop a debuggee, and thus it is a
> convenient means of doing so?
> 
> I wonder how many others here think like you and how many think like
> me.  If I'm the odd one out, then I won't continue talking about this
> aspect of your patches.
> 
> I'm glad you found a way of making the effects of these changes less
> surprising, but I still have a couple of issues with the changes,
> which I will raise in response to your v2.

I would really like it if Ctrl-C always stopped the debuggee.  Consider
when attaching to an existing process via 'attach <pid>'.  That always
stops the process regardless of what signals it does or doesn't have
masked.  This of course uses SIGSTOP (which is not maskable) not SIGINT
to stop the inferior.  I think I view Ctrl-C in the window where I'm
running GDB as Pedro does: a command to GDB rather than to the inferior.
When running something directly under GDB via run, I view GDB as a kind
of "supervisor" of the inferior, and Ctrl-C is one of the "supervisor"
hooks in my mind.  I don't know that there are many others, but as a
user I want some fail-safe to always be able to stop the program I'm
debugging.

Put another way, every time I hit Ctrl-C when running a program under
GDB, the thought in my mind is not "I want to kill the program", it is
"I want to stop the program so I can examine its state in the debugger".

-- 
John Baldwin

  reply	other threads:[~2021-06-15 15:50 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-03 19:02 Pedro Alves
2021-06-03 19:02 ` [PATCH 01/17] Test interrupting programs that block SIGINT [gdb/9425, gdb/14559] Pedro Alves
2021-06-03 19:02 ` [PATCH 02/17] prefork_hook: Remove 'args' parameter Pedro Alves
2021-06-03 19:02 ` [PATCH 03/17] Fix silent gdb.base/annota1.exp test coverage regression Pedro Alves
2021-06-03 19:28   ` Andrew Burgess
2021-06-14 20:30     ` Pedro Alves
2021-06-03 19:02 ` [PATCH 04/17] Make gdb.base/long-inferior-output.exp fail fast Pedro Alves
2021-06-03 19:02 ` [PATCH 05/17] Fix gdb.multi/multi-term-settings.exp race Pedro Alves
2021-06-03 19:02 ` [PATCH 06/17] Don't check parent pid in gdb.threads/{ia64-sigill, siginfo-threads, watchthreads-reorder}.c Pedro Alves
2021-06-03 19:02 ` [PATCH 07/17] Special-case "set inferior-tty /dev/tty" Pedro Alves
2021-06-03 19:02 ` [PATCH 08/17] Make inferior/GDB share terminal in run+detach testcases Pedro Alves
2021-07-02 19:31   ` Tom Tromey
2021-06-03 19:02 ` [PATCH 09/17] Make inferior/GDB share terminal in tests that exercise GDB/inferior reading same input Pedro Alves
2021-06-03 19:02 ` [PATCH 10/17] gdb.mi/mi-logging.exp, don't send input to GDB while the inferior is running Pedro Alves
2021-06-03 19:02 ` [PATCH 11/17] target_terminal::ours_for_output before printing signal received Pedro Alves
2021-06-03 19:02 ` [PATCH 12/17] Move scoped_ignore_sigttou to gdbsupport/ Pedro Alves
2021-06-03 19:02 ` [PATCH 13/17] Always put inferiors in their own terminal/session [gdb/9425, gdb/14559] Pedro Alves
2021-06-03 19:02 ` [PATCH 14/17] exists_non_stop_target: Avoid flushing frames Pedro Alves
2021-06-03 19:02 ` [PATCH 15/17] convert previous_inferior_ptid to strong reference to thread_info Pedro Alves
2021-06-03 19:02 ` [PATCH 16/17] GNU/Linux: Interrupt/Ctrl-C with SIGSTOP instead of SIGINT [PR gdb/9425, PR gdb/14559] Pedro Alves
2021-06-03 19:02 ` [PATCH 17/17] Document pseudo-terminal and interrupting changes Pedro Alves
2021-06-03 19:28   ` Eli Zaretskii via Gdb-patches
2021-06-03 19:51 ` [PATCH 00/17] Interrupting programs that block/ignore SIGINT Eli Zaretskii via Gdb-patches
2021-06-13 10:41   ` Eli Zaretskii via Gdb-patches
2021-06-14 16:29     ` Pedro Alves
2021-06-14 17:10       ` Eli Zaretskii via Gdb-patches
2021-06-14 17:55   ` Pedro Alves
2021-06-15 12:18     ` Eli Zaretskii via Gdb-patches
2021-06-15 15:50       ` John Baldwin [this message]
2021-06-15 16:18         ` Eli Zaretskii via Gdb-patches
2021-06-15 16:41           ` John Baldwin
2021-06-16 10:01             ` Pedro Alves
2021-06-16 12:10               ` Eli Zaretskii via Gdb-patches
2021-06-16 15:06               ` John Baldwin
2021-07-02 19:35 ` Tom Tromey

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=c1679ecb-497e-f2d1-879c-287e5dea3953@FreeBSD.org \
    --to=jhb@freebsd.org \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=pedro@palves.net \
    /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