RE: fail to attach to process on Solaris

Burkhardt, Glenn
2011-09-21T18:45:22Z

> Sent: Wednesday, September 21, 2011 1:39 PM
> To: Burkhardt, Glenn
> Cc: gdb@sourceware.org
> Subject: Re: fail to attach to process on Solaris
>
>
> Okay, the linux code ignores zombie threads, like in the
> patch below. Does that help? There's a couple more places
> where it ignores zombie threads, that we may need to bring
> over as well.
> Look for TD_THR_ZOMBIE in linux-thread-db.c.
>
> --
> Pedro Alves
>
> ---
> gdb/sol-thread.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> Index: src/gdb/sol-thread.c
> ===================================================================
> --- src.orig/gdb/sol-thread.c 2011-03-01 16:00:06.000000000 +0000
> +++ src/gdb/sol-thread.c 2011-09-21 18:34:30.029928904 +0100
> @@ -1177,6 +1177,9 @@ sol_find_new_threads_callback (const td_
> if (retval != TD_OK)
> return -1;
>
> + if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE)
> + return 0; /* A zombie -- ignore. */
> +
> ptid = BUILD_THREAD (ti.ti_tid, PIDGET (inferior_ptid));
> if (!in_thread_list (ptid) || is_exited (ptid))
> add_thread (ptid);
>

The patch makes a big difference. At least, I can continue the attached
process now. I'll play with it a bit more, and report back. I'll also
check for other places where
TD_THR_ZOMBIE in linux-thread-db.c is used.