Avoid find_thread_ptid with null_ptid
authorPedro Alves <palves@redhat.com>
Thu, 22 Nov 2018 16:09:12 +0000 (16:09 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 22 Nov 2018 16:09:12 +0000 (16:09 +0000)
commit151bb4a5059e73934f7bc61318efaaffe0c91b81
tree1fc2e95d8a6fe37949f6ee0d3893aaaca32474b7
parent79a9468c702f7087b5bbff2cfd2210a94e7c5fa4
Avoid find_thread_ptid with null_ptid

With a following patch, find_thread_ptid will first find the inferior
for the passed-in ptid, using find_inferior_pid, and then look for the
thread in that inferior's thread list.  If we pass down null_ptid to
find_thread_ptid then that means we'll end up passing 0 to
find_inferior_pid, which hits this assertion:

>   struct inferior *
>   find_inferior_pid (int pid)
>   {
>     struct inferior *inf;
>
>     /* Looking for inferior pid == 0 is always wrong, and indicative of
> a bug somewhere else.  There may be more than one with pid == 0,
> for instance.  */
>     gdb_assert (pid != 0);

This patch prepares for the change, by avoiding passing down null_ptid
to find_thread_ptid or to functions that naturally use it, such as the
target_pid_to_str call in inferior.c:add_inferior.  In that latter
case, the patch changes GDB output,

from:
 (gdb) add-inferior
 [New inferior 2 (process 0)]

to:
 (gdb) add-inferior
 [New inferior 2]

which seems like a good change to me.  It might not even make sense to
talk about "process" for the current target, for example.

The python_on_normal_stop change ends up avoiding looking up the
same thread twice (inferior_thread also does a look up).

gdb/ChangeLog:
2018-11-22  Pedro Alves  <palves@redhat.com>

* cli/cli-interp.c (cli_on_user_selected_context_changed): Use
inferior_thread instead of find_thread_ptid, and only when
inferior_ptid is not null_ptid.
* inferior.c (add_inferior): Don't include target_pid_to_str
output when the inferior is not started.
* python/py-inferior.c (python_on_normal_stop): Don't use
find_thread_ptid.
(tui_on_user_selected_context_changed): Use inferior_thread
instead of find_thread_ptid, and only when inferior_ptid is not
null_ptid.
gdb/ChangeLog
gdb/cli/cli-interp.c
gdb/inferior.c
gdb/python/py-inferior.c
gdb/tui/tui-interp.c