This is the mail archive of the
mailing list for the GDB project.
RE: fail to attach to process on Solaris
> -----Original Message-----
> From: Pedro Alves [mailto:firstname.lastname@example.org]
> Sent: Wednesday, September 21, 2011 1:39 PM
> To: Burkhardt, Glenn
> Cc: email@example.com
> 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.