when can find_thread_pid (inferior_ptid) return NULL?

Doug Evans dje@google.com
Thu Mar 26 21:36:00 GMT 2009


Hi.  Some places in gdb assert that find_thread_pid (inferior_ptid)
is never NULL.

e.g.

struct thread_info*
inferior_thread (void)
{
  struct thread_info *tp = find_thread_pid (inferior_ptid);
  gdb_assert (tp);
  return tp;
}

Other places check.  E.g.

make_cleanup_restore_current_thread:

      tp = find_thread_pid (inferior_ptid);
      if (tp)
	tp->refcount++;

Since delete_thread_1 has this:

  /* If this is the current thread, or there's code out there that
     relies on it existing (refcount > 0) we can't delete yet.  Mark
     it as exited, and notify it.  */
  if (tp->refcount > 0
      || ptid_equal (tp->ptid, inferior_ptid))
    {

I would expect that one can always assert
find_thread_pid (inferior_ptid) != NULL.

Is that true?
Or are there situations where it's not true?



More information about the Gdb mailing list