Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Eli Zaretskii via Gdb-patches <gdb-patches@sourceware.org>
To: Pedro Alves <pedro@palves.net>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v2 00/16] Interrupting programs that block/ignore SIGINT
Date: Tue, 15 Jun 2021 15:34:12 +0300	[thread overview]
Message-ID: <83sg1j488r.fsf@gnu.org> (raw)
In-Reply-To: <20210614212410.1612666-1-pedro@palves.net> (message from Pedro Alves on Mon, 14 Jun 2021 22:23:54 +0100)

> From: Pedro Alves <pedro@palves.net>
> Date: Mon, 14 Jun 2021 22:23:54 +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.

For the reasons I explained in my other message, can we please talk
about "stopping a program" instead of "interrupting"?  Both in the log
message (and the discussion) and in the documentation, please.  At
least for me, the use of "interrupt" was confusing.

> This series address the problem by turning Ctrl-C handling around such
> that the SIGINT always reaches GDB first, not the inferior.  That is
> done by making GDB put inferiors in their own terminal/session created
> by GDB.  I.e., GDB creates a pseudo-terminal master/slave pair, makes
> the inferior run with the slave as its terminal, and pumps
> output/input on the master end.

Is this "pumping" really-truly 100% transparent to the program being
debugged?  I understand how a program that uses stdio will simply read
the same stuff that was "pumped" from GDB's terminal, but what about
other kinds of input and settings?

For example, some text-mode programs change the settings of the
terminal via termios -- will those settings be reflected in the GDB's
terminal when the debuggee reads or writes from its terminal?  Or what
about support for terminfo functions -- will the commands be passed
back and forth between the terminals and the user will see the effects
he/she expects?  Some terminal emulators support advanced features
like cut/paste -- will that also work with this pumping?  And if the
program changes the character that causes SIGINT (Emacs does that when
it runs on a text-mode terminal), will that change the interrupt
character for GDB as well?

> The series will then make GDB interrupt the program with SIGSTOP
> instead of SIGINT, which always works even if the inferior
> blocks/ignores SIGINT -- SIGSTOP can't be ignored.

And if the user then types "continue", will SIGINT be delivered to the
program, or will the Ctrl-C keystroke be "swallowed" by GDB?

> Having the inferior in its own terminal also means that GDB is in
> control of when inferior output is flushed to the screen.  When
> debugging with the CLI, this means that inferior output is now never
> interpersed with GDB's output in an unreadable fashion.

I guess this will be done on the screen line level?  Because if a
program uses terminfo or curses to write to different parts of the
screen, the outputs of the program and GDB will mix anyhow, just not
on the same screen line, right?

  parent reply	other threads:[~2021-06-15 12:34 UTC|newest]

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

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=83sg1j488r.fsf@gnu.org \
    --to=gdb-patches@sourceware.org \
    --cc=eliz@gnu.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