* linux-nat.c (linux_nat_filter_events): Do not delete the lwp if

this is the last one.
This commit is contained in:
Joel Brobecker 2009-04-01 18:56:30 +00:00
parent 0d8f58ca94
commit 9db037429b
2 changed files with 17 additions and 11 deletions

View File

@ -1,3 +1,8 @@
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.
2009-04-01 Pedro Alves <pedro@codesourcery.com>
* remote.c (append_resumption): New.

View File

@ -2623,16 +2623,16 @@ linux_nat_filter_event (int lwpid, int status, int options)
/* 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 status, int options)
"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