2001-06-29 Ken Whaley <ken@believe.com>
authorMichael Snyder <msnyder@vmware.com>
Tue, 3 Jul 2001 21:01:59 +0000 (21:01 +0000)
committerMichael Snyder <msnyder@vmware.com>
Tue, 3 Jul 2001 21:01:59 +0000 (21:01 +0000)
* thread-db.c (attach_thread): Check for TD_THR_ZOMBIE in addition
to TD_THR_UNKNOWN when looking for defunct zombie threads.
(thread_db_thread_alive): Ditto.
(find_new_threads_callback): Ditto.

gdb/ChangeLog
gdb/thread-db.c

index 342f3fd..bb17a7c 100644 (file)
@@ -1,3 +1,10 @@
+2001-06-29  Ken Whaley  <ken@believe.com>
+
+       * thread-db.c (attach_thread): Check for TD_THR_ZOMBIE in addition
+       to TD_THR_UNKNOWN when looking for defunct zombie threads.
+       (thread_db_thread_alive): Ditto.
+       (find_new_threads_callback): Ditto.
+
 2001-07-02  Daniel Jacobowitz  <drow@mvista.com>
 
        * MAINTAINERS: Add myself to the write-after-approval list.
index d989c49..364dcc7 100644 (file)
@@ -573,7 +573,8 @@ attach_thread (ptid_t ptid, const td_thrhandle_t *th_p,
   tp->private = xmalloc (sizeof (struct private_thread_info));
   tp->private->lwpid = ti_p->ti_lid;
 
-  if (ti_p->ti_state == TD_THR_UNKNOWN)
+  if (ti_p->ti_state == TD_THR_UNKNOWN ||
+      ti_p->ti_state == TD_THR_ZOMBIE)
     return;/* A zombie thread that's been joined -- do not attach. */
 
   /* Under Linux, we have to attach to each and every thread.  */
@@ -915,7 +916,8 @@ thread_db_thread_alive (ptid_t ptid)
       if (err != TD_OK)
        return 0;
 
-      if (ti.ti_state == TD_THR_UNKNOWN)
+      if (ti.ti_state == TD_THR_UNKNOWN ||
+         ti.ti_state == TD_THR_ZOMBIE)
        return 0;       /* A zombie thread that's been joined. */
 
       return 1;
@@ -938,7 +940,9 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
   if (err != TD_OK)
     error ("Cannot get thread info: %s", thread_db_err_str (err));
 
-  if (ti.ti_state == TD_THR_UNKNOWN)
+  if (ti.ti_state == TD_THR_UNKNOWN ||
+      ti.ti_state == TD_THR_ZOMBIE)
+
     return 0;  /* A zombie that's been reaped -- ignore. */
 
   ptid = BUILD_THREAD (ti.ti_tid, GET_PID (inferior_ptid));