This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: handle leader exits; don't get stuck when all resumed threads exit
On Friday 28 October 2011 15:01:30, Pedro Alves wrote:
> And below's the full patch. I'll apply it later today if there
> are no further comments.
Alright, I've applied it. Here's to hoping I haven't broken anything!
> 2011-10-28 Pedro Alves <pedro@codesourcery.com>
>
> gdb/
> * linux-nat.c (linux_nat_filter_event): Remove `options'
> parameter, and dead code that used it. If we're handling a
> PTRACE_EVENT_EXEC event, and the thread group leader is no longer
> in our lwp list, re-add it.
> (check_zombie_leaders): New.
> (linux_nat_wait_1): Remove `options' and `pid' locals. Always
> wait for children with WNOHANG, and always wait for all children.
> Don't check for no resumed children upfront. Simplify wait loop.
> Check for zombie thread group leaders after handling all wait
> statuses. Return TARGET_WAITKIND_NO_RESUMED if there no
> unwaited-for children left.
> * infrun.c (fetch_inferior_event): Handle TARGET_WAITKIND_NO_RESUMED.
> (handle_inferior_event): Handle TARGET_WAITKIND_NO_RESUMED.
> (normal_stop): Handle TARGET_WAITKIND_NO_RESUMED.
> * target.h (enum target_waitkind) <TARGET_WAITKIND_NO_RESUMED>: New.
>
> gdb/testsuite/
> * gdb.threads/no-unwaited-for-left.c: New.
> * gdb.threads/no-unwaited-for-left.exp: New.
> * gdb.threads/non-ldr-exc-1.c: New.
> * gdb.threads/non-ldr-exc-1.exp: New.
> * gdb.threads/non-ldr-exc-2.c: New.
> * gdb.threads/non-ldr-exc-2.exp: New.
> * gdb.threads/non-ldr-exc-3.c: New.
> * gdb.threads/non-ldr-exc-3.exp: New.
> * gdb.threads/non-ldr-exc-4.c: New.
> * gdb.threads/non-ldr-exc-4.exp: New.
--
Pedro Alves