[PATCH v5 3/5] gdb/remote: do not delete a thread if it has a pending event
Pedro Alves
palves@redhat.com
Thu Apr 16 16:24:29 GMT 2020
On 4/6/20 4:45 PM, Tankut Baris Aktemur via Gdb-patches wrote:
> gdb/ChangeLog:
> 2020-04-06 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
>
> * remote.c (remote_target::update_thread_list): Do not delete
> a thread if it has a pending event.
> ---
> gdb/remote.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/gdb/remote.c b/gdb/remote.c
> index bfbc0bc21d3..12ac7cb9862 100644
> --- a/gdb/remote.c
> +++ b/gdb/remote.c
> @@ -3821,6 +3821,9 @@ remote_target::update_thread_list ()
> if (tp->inf->process_target () != this)
> continue;
>
> + if (tp->suspend.waitstatus_pending_p)
> + continue;
> +
This patch makes me nervous. :-/
Why doesn't prune_threads, via remote_target::thread_alive end
up removing the thread anyway?
I think it'd be better to extend the check to also check for
TARGET_WAITKIND_EXITED/TARGET_WAITKIND_SIGNALLED. Let threads
with other kinds of events pending be deleted.
Other targets are likely to need something like this, but I'm
OK with going with remote-specific test to start with, so we
can all this in, including the testcase, and then work on
something more generic if we find a need.
In any case, please add some comments.
Thanks,
Pedro Alves
More information about the Gdb-patches
mailing list