This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] [GDBServer] Send SIGINT using process group ID


The use case was attaching, like you mentioned, on Android. And I just found PR/18945 [1], which describes the problem. I now see that my patch is not a good solution either because on Android, the pgid is the zygote process, and all running apps on the system belong to that group.

Seems like the best solution is to handle attaching separately? Or maybe send SIGINT to the process first, and if that fails, send it to the process group, in order to address the original bug of a dead main thread when pausing?

Thanks,
Jim

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=18945

On 5/18/2016 8:10 AM, Pedro Alves wrote:
On 05/11/2016 10:51 PM, Jim Chen wrote:
Hi,

linux_request_interrupt is supposed to send SIGINT to the process group,
but it passes the process ID to kill() instead of the process group ID,
which may not be the same as the process ID.
The patch calls getpgid
first to get the process group ID.

Patch tested on arm-linux.

Can you expand on the use case you see this happening on, please?
I can imagine some, but I'd like to hear it from you.

Some have expressed desire to _not_ send the SIGINT to the whole
process group, which may make sense when you're attached to a
process rather than having started it.  IIRC, there's a bug filed in
bugzilla about this.

Looking at the code, not-sending-to-process-group-when-attached
is what native GNU/Linux does too (inflow.c:pass_signal).

Seems like "c&" -> "interrupt" doesn't consider "attach" either,
as inf-ptrace.c:inf_ptrace_interrupt sends the SIGINT
to the process, and like gdbserver, assumes the inferior's
PID is the process group id.

Thanks,
Pedro Alves



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]