* [patch] linux_nat_kill() compat. with linux-2.4.x
@ 2014-03-16 13:59 Jan Kratochvil
2014-05-21 12:49 ` Pedro Alves
0 siblings, 1 reply; 5+ messages in thread
From: Jan Kratochvil @ 2014-03-16 13:59 UTC (permalink / raw)
To: gdb-patches
Hi,
it had been already approved by Tom that time so I will check it in in some time.
[patch] Fix SIGTERM signal safety (PR gdb/15358)
https://sourceware.org/ml/gdb-patches/2013-07/msg00094.html
Message-ID: <20130702200010.GA23478@host2.jankratochvil.net>
Doug has just asked to split it out of:
Re: [patchv2] Fix SIGTERM signal safety (PR gdb/15358) [refresh]
https://sourceware.org/ml/gdb-patches/2014-03/msg00342.html
Message-ID: <21284.44419.745786.47756@ruffy.mtv.corp.google.com>
The testcase of the patch above still PASSes for me on Fedora 20 x86_64 even
without this patch, I guess this patch was needed only on that 2.4.x Linux
kernel it mentions. I am no longer interested in 2.4.x so if anyone has any
concerns I am also fine with dropping this patch.
Thanks,
Jan
gdb/
2014-03-16 Jan Kratochvil <jan.kratochvil@redhat.com>
PR gdb/15358
* linux-nat.c (linux_nat_kill): Use kill_callback first.
Extend the comment for stop_callback.
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index b615423..ec84188 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -3777,8 +3777,15 @@ linux_nat_kill (struct target_ops *ops)
{
ptid_t ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
+ /* Kill all LWP's before trying to stop them. In rare cases the
+ lwp_info state may not match the inferior and
+ stop_wait_callback could lock up. */
+ iterate_over_lwps (ptid, kill_callback, NULL);
+
/* Stop all threads before killing them, since ptrace requires
- that the thread is stopped to sucessfully PTRACE_KILL. */
+ that the thread is stopped to sucessfully PTRACE_KILL.
+ kill_callback normally already turned the inferior into a zombie
+ except for old Linux kernels 2.4.x. */
iterate_over_lwps (ptid, stop_callback, NULL);
/* ... and wait until all of them have reported back that
they're no longer running. */
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [patch] linux_nat_kill() compat. with linux-2.4.x
2014-03-16 13:59 [patch] linux_nat_kill() compat. with linux-2.4.x Jan Kratochvil
@ 2014-05-21 12:49 ` Pedro Alves
2014-06-06 20:15 ` Jan Kratochvil
0 siblings, 1 reply; 5+ messages in thread
From: Pedro Alves @ 2014-05-21 12:49 UTC (permalink / raw)
To: Jan Kratochvil, gdb-patches
Hi Jan,
On 03/16/2014 01:59 PM, Jan Kratochvil wrote:
> gdb/
> 2014-03-16 Jan Kratochvil <jan.kratochvil@redhat.com>
>
> PR gdb/15358
> * linux-nat.c (linux_nat_kill): Use kill_callback first.
> Extend the comment for stop_callback.
>
> diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
> index b615423..ec84188 100644
> --- a/gdb/linux-nat.c
> +++ b/gdb/linux-nat.c
> @@ -3777,8 +3777,15 @@ linux_nat_kill (struct target_ops *ops)
> {
> ptid_t ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
>
> + /* Kill all LWP's before trying to stop them. In rare cases the
> + lwp_info state may not match the inferior and
> + stop_wait_callback could lock up. */
Hmm, I find this comment confusing and not really enlightening.
What sort of rare cases? It that PR15713? Best just fix that.
I've sent a patch:
https://sourceware.org/ml/gdb-patches/2014-05/msg00473.html
--
Pedro Alves
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [patch] linux_nat_kill() compat. with linux-2.4.x
2014-05-21 12:49 ` Pedro Alves
@ 2014-06-06 20:15 ` Jan Kratochvil
2014-06-09 10:29 ` Pedro Alves
0 siblings, 1 reply; 5+ messages in thread
From: Jan Kratochvil @ 2014-06-06 20:15 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
On Wed, 21 May 2014 14:49:43 +0200, Pedro Alves wrote:
> On 03/16/2014 01:59 PM, Jan Kratochvil wrote:
> > diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
> > index b615423..ec84188 100644
> > --- a/gdb/linux-nat.c
> > +++ b/gdb/linux-nat.c
> > @@ -3777,8 +3777,15 @@ linux_nat_kill (struct target_ops *ops)
> > {
> > ptid_t ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
> >
> > + /* Kill all LWP's before trying to stop them. In rare cases the
> > + lwp_info state may not match the inferior and
> > + stop_wait_callback could lock up. */
>
> Hmm, I find this comment confusing and not really enlightening.
> What sort of rare cases? It that PR15713? Best just fix that.
> I've sent a patch:
> https://sourceware.org/ml/gdb-patches/2014-05/msg00473.html
The reproducible case is that PR15713 and it is sure great you have fixed it.
Fine with dropping the patch although I still do not find it obvious the patch
is no longer relevant.
FSF GDB now relies on fact that ptraced inferior state always matches
lp->stopped and there is a matching signal to wait for etc. In some cases GDB
hangs during quit (and inferiors cleanup) and one has to kill GDB itself.
Reasons are not known to me as I do not know how to reproduce it.
(It may be also possible all such reasons have been fixed now.)
It also may hang somewhere else and not in linux_nat_kill().
This patch made GDB foolproof against any state of inferior when killing the
inferior so that GDB could no longer hang. But it would hide some possible
remaining bugs in the code (which may be causing the GDB hangs).
Jan
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [patch] linux_nat_kill() compat. with linux-2.4.x
2014-06-06 20:15 ` Jan Kratochvil
@ 2014-06-09 10:29 ` Pedro Alves
2014-06-09 10:32 ` Jan Kratochvil
0 siblings, 1 reply; 5+ messages in thread
From: Pedro Alves @ 2014-06-09 10:29 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: gdb-patches
On 06/06/2014 09:15 PM, Jan Kratochvil wrote:
> On Wed, 21 May 2014 14:49:43 +0200, Pedro Alves wrote:
>> On 03/16/2014 01:59 PM, Jan Kratochvil wrote:
>>> diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
>>> index b615423..ec84188 100644
>>> --- a/gdb/linux-nat.c
>>> +++ b/gdb/linux-nat.c
>>> @@ -3777,8 +3777,15 @@ linux_nat_kill (struct target_ops *ops)
>>> {
>>> ptid_t ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
>>>
>>> + /* Kill all LWP's before trying to stop them. In rare cases the
>>> + lwp_info state may not match the inferior and
>>> + stop_wait_callback could lock up. */
>>
>> Hmm, I find this comment confusing and not really enlightening.
>> What sort of rare cases? It that PR15713? Best just fix that.
>> I've sent a patch:
>> https://sourceware.org/ml/gdb-patches/2014-05/msg00473.html
>
> The reproducible case is that PR15713 and it is sure great you have fixed it.
Great.
> Fine with dropping the patch although I still do not find it obvious the patch
> is no longer relevant.
Thanks, I'd rather drop it.
> FSF GDB now relies on fact that ptraced inferior state always matches
> lp->stopped and there is a matching signal to wait for etc. In some cases GDB
> hangs during quit (and inferiors cleanup) and one has to kill GDB itself.
> Reasons are not known to me as I do not know how to reproduce it.
> (It may be also possible all such reasons have been fixed now.)
I think any case that this bullet proofing patch could work around
have now been fixed.
> It also may hang somewhere else and not in linux_nat_kill().
Right. I'd say it's much more likely (even though not very likely, tbc)
that we see hangs elsewhere than in linux_nat_kill now. E.g., GDB core's
is_executing state getting out of sync with lwp->stopped.
> This patch made GDB foolproof against any state of inferior when killing the
> inferior so that GDB could no longer hang. But it would hide some possible
> remaining bugs in the code (which may be causing the GDB hangs).
Right, I'd rather just fix the GDB bugs, and only consider such a patch
if we need to work around a kernel bug (though I'd rather just
ignore very old kernels like 2.4 by now).
--
Pedro Alves
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [patch] linux_nat_kill() compat. with linux-2.4.x
2014-06-09 10:29 ` Pedro Alves
@ 2014-06-09 10:32 ` Jan Kratochvil
0 siblings, 0 replies; 5+ messages in thread
From: Jan Kratochvil @ 2014-06-09 10:32 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
On Mon, 09 Jun 2014 12:29:28 +0200, Pedro Alves wrote:
> On 06/06/2014 09:15 PM, Jan Kratochvil wrote:
> > It also may hang somewhere else and not in linux_nat_kill().
>
> Right. I'd say it's much more likely (even though not very likely, tbc)
> that we see hangs elsewhere than in linux_nat_kill now. E.g., GDB core's
> is_executing state getting out of sync with lwp->stopped.
>
> > This patch made GDB foolproof against any state of inferior when killing the
> > inferior so that GDB could no longer hang. But it would hide some possible
> > remaining bugs in the code (which may be causing the GDB hangs).
>
> Right, I'd rather just fix the GDB bugs, and only consider such a patch
> if we need to work around a kernel bug (though I'd rather just
> ignore very old kernels like 2.4 by now).
OK, so according to the approach chosen above considering this patch dropped.
Jan
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-06-09 10:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-16 13:59 [patch] linux_nat_kill() compat. with linux-2.4.x Jan Kratochvil
2014-05-21 12:49 ` Pedro Alves
2014-06-06 20:15 ` Jan Kratochvil
2014-06-09 10:29 ` Pedro Alves
2014-06-09 10:32 ` Jan Kratochvil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox