2004-06-07 Jeff Johnston <jjohnstn@redhat.com>
authorJeff Johnston <jjohnstn@redhat.com>
Mon, 7 Jun 2004 22:35:55 +0000 (22:35 +0000)
committerJeff Johnston <jjohnstn@redhat.com>
Mon, 7 Jun 2004 22:35:55 +0000 (22:35 +0000)
        * thread-db.c (thread_get_info_callback): Fill in the thread_info
        struct if one exists, even if we are dealing with a zombie thread.

gdb/ChangeLog
gdb/thread-db.c

index f6ad170e50617bee6d18b939f30c8a2ee98d9d58..25f91331e5f80f068409b3ee12172230e026819e 100644 (file)
@@ -1,3 +1,8 @@
+2004-06-07  Jeff Johnston  <jjohnstn@redhat.com>
+
+       * thread-db.c (thread_get_info_callback): Fill in the thread_info
+       struct if one exists, even if we are dealing with a zombie thread.
+
 2004-06-07  Andrew Cagney  <cagney@gnu.org>
 
        * target.h (PC_REQUIRES_RUN_BEFORE_USE): Delete definition.
index baa9ba6e54ee1f84edaf5f96e7afaac53e75cd5c..50ae74712c33680829e42349b029c736b47af678 100644 (file)
@@ -275,12 +275,18 @@ thread_get_info_callback (const td_thrhandle_t *thp, void *infop)
   thread_info = find_thread_pid (thread_ptid);
 
   /* In the case of a zombie thread, don't continue.  We don't want to
-     attach to it thinking it is a new thread and we don't want to mark
-     it as valid.  */
+     attach to it thinking it is a new thread.  */
   if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE)
     {
       if (infop != NULL)
         *(struct thread_info **) infop = thread_info;
+      if (thread_info != NULL)
+       {
+         memcpy (&thread_info->private->th, thp, sizeof (*thp));
+         thread_info->private->th_valid = 1;
+         memcpy (&thread_info->private->ti, &ti, sizeof (ti));
+         thread_info->private->ti_valid = 1;
+       }
       return TD_THR_ZOMBIE;
     }