This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] [PATCH] Kill processes, not process groups
- From: pinskia at gmail dot com
- To: Daniel Colascione <dancol at dancol dot org>
- Cc: gdb-patches <gdb-patches at sourceware dot org>
- Date: Thu, 14 May 2015 01:17:22 -0700
- Subject: Re: [RFC] [PATCH] Kill processes, not process groups
- Authentication-results: sourceware.org; auth=none
- References: <555455E2 dot 3060905 at dancol dot org>
> On May 14, 2015, at 12:59 AM, Daniel Colascione <dancol@dancol.org> wrote:
>
> Killing process groups for interruption doesn't make any sense. Say we
> have a two-process group [A B], where A is the leader. If we attach to
> A and use "interrupt", we accidentally kill B. If we attach to B,
> "interrupt" does nothing. Why wouldn't we just signal A?
>
> This problem is worse in the gdbserver case. Locally, we use
> pass_signal, not interrupt, for C-c, and pass_signal does the right
> thing. But in the remote case, we have nothing but interrupt, and that
> doesn't seem to do users intend.
>
> commit 8d096e713e46f00bc8bf55743288a24f6222021f
> Author: Daniel Colascione <dancol@dancol.org>
> Date: Wed May 13 23:58:24 2015 -0700
>
> Kill the process we're dealing with, not the whole group
>
> diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
> index 4da11c6..8a725fa 100644
> --- a/gdb/gdbserver/linux-low.c
> +++ b/gdb/gdbserver/linux-low.c
> @@ -4904,7 +4904,7 @@ linux_request_interrupt (void)
>
> /* Send a SIGINT to the process group. This acts just like the user
> typed a ^C on the controlling terminal. */
> - kill (-signal_pid, SIGINT);
> + kill (signal_pid, SIGINT);
Your patch did not update the comment though. So it raises the question which is the correct behavior.
Thanks,
Andrew
> }
>
> /* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET
>