From: Pedro Alves Date: Thu, 7 Mar 2019 16:35:06 +0000 (+0000) Subject: Fix normal_stop latent bug X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fe7266674110f34eacf2e9d2b308f76d33ce50ed;p=binutils-gdb.git Fix normal_stop latent bug TARGET_WAITKIND_NO_RESUMED doesn't have an associated event thread, so we shouldn't be referring to inferior_thread() assuming it points to one. This was caught on the multi-target branch, where we always switch to no-thread-selected whenever we start handling an event, exactly to catch places that incorrectly use "inferior_ptid/inferior_thread()" without switching to the right event thread / target. Here, on the branch, we assert in inferior_thread() because TARGET_WAITKIND_NO_RESUMED doesn't have an associated event thread, so inferior_ptid is still null_ptid. gdb/ChangeLog: 2019-03-07 Pedro Alves * infrun.c (normal_stop): Also check for TARGET_WAITKIND_NO_RESUMED before referring to inferior_thread(). --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d3d6e5b4ee6..5614e7887d1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-03-07 Pedro Alves + + * infrun.c (normal_stop): Also check for + TARGET_WAITKIND_NO_RESUMED before referring to inferior_thread(). + 2019-03-07 Andrew Burgess * f-lang.c (value_from_host_double): Moved to... diff --git a/gdb/infrun.c b/gdb/infrun.c index 61467be029b..33e5d434b35 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -8146,7 +8146,8 @@ normal_stop (void) if (target_has_execution) { if (last.kind != TARGET_WAITKIND_SIGNALLED - && last.kind != TARGET_WAITKIND_EXITED) + && last.kind != TARGET_WAITKIND_EXITED + && last.kind != TARGET_WAITKIND_NO_RESUMED) /* Delete the breakpoint we stopped at, if it wants to be deleted. Delete any breakpoint that is to be deleted at the next stop. */ breakpoint_auto_delete (inferior_thread ()->control.stop_bpstat);