From: Joel Brobecker <brobecker@adacore.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA] Fix crash on Linux 2.4 when threaded program exits
Date: Wed, 01 Apr 2009 18:58:00 -0000 [thread overview]
Message-ID: <20090401185812.GF8766@adacore.com> (raw)
In-Reply-To: <200904011942.40306.pedro@codesourcery.com>
[-- Attachment #1: Type: text/plain, Size: 602 bytes --]
> > 2009-04-01 Joel Brobecker <brobecker@adacore.com>
> >
> > * linux-nat.c (linux_nat_filter_events): Do not delete the lwp if
> > this is the last one.
> Yes, this is OK.
Thanks :)
> The comments about ntpl and thread exit notifications on nptl
> are confusing to a reader considering Linux 2.6. They could do
> with a:
>
> s/In the nptl thread model/In the nptl thread model on Linux 2.4/.
>
> wait_lwp does mention this 2.4 + backported nptl artifact explicitly.
That's a good suggestion. Attached is the patch I ended checking in.
Thanks for the quick review,
--
Joel
[-- Attachment #2: thread-24.diff --]
[-- Type: text/x-diff, Size: 1975 bytes --]
Index: linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/linux-nat.c,v
retrieving revision 1.126
diff -u -p -r1.126 linux-nat.c
--- linux-nat.c 25 Mar 2009 10:02:13 -0000 1.126
+++ linux-nat.c 1 Apr 2009 18:54:37 -0000
@@ -2623,16 +2623,16 @@ linux_nat_filter_event (int lwpid, int s
/* Check if the thread has exited. */
if ((WIFEXITED (status) || WIFSIGNALED (status)) && num_lwps > 1)
{
- /* If this is the main thread, we must stop all threads and
- verify if they are still alive. This is because in the nptl
- thread model, there is no signal issued for exiting LWPs
+ /* If this is the main thread, we must stop all threads and verify
+ if they are still alive. This is because in the nptl thread model
+ on Linux 2.4, there is no signal issued for exiting LWPs
other than the main thread. We only get the main thread exit
signal once all child threads have already exited. If we
stop all the threads and use the stop_wait_callback to check
if they have exited we can determine whether this signal
should be ignored or whether it means the end of the debugged
application, regardless of which threading model is being
- used. */
+ used. */
if (GET_PID (lp->ptid) == GET_LWP (lp->ptid))
{
lp->stopped = 1;
@@ -2644,13 +2644,14 @@ linux_nat_filter_event (int lwpid, int s
"LLW: %s exited.\n",
target_pid_to_str (lp->ptid));
- exit_lwp (lp);
-
- /* If there is at least one more LWP, then the exit signal was
- not the end of the debugged application and should be
- ignored. */
- if (num_lwps > 0)
- return NULL;
+ if (num_lwps > 1)
+ {
+ /* If there is at least one more LWP, then the exit signal
+ was not the end of the debugged application and should be
+ ignored. */
+ exit_lwp (lp);
+ return NULL;
+ }
}
/* Check if the current LWP has previously exited. In the nptl
prev parent reply other threads:[~2009-04-01 18:58 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-01 18:22 Joel Brobecker
2009-04-01 18:42 ` Pedro Alves
2009-04-01 18:58 ` Joel Brobecker [this message]
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=20090401185812.GF8766@adacore.com \
--to=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=pedro@codesourcery.com \
/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