aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2010-01-09 04:36:00 +0000
committerJoel Brobecker <brobecker@gnat.com>2010-01-09 04:36:00 +0000
commit4b7703adccf176d99bc0ee97efd40ee149762162 (patch)
tree2209327d47c8b3e404c701a91fe63d1a2fb6bb99 /gdb/infrun.c
parent12c894746152a600f71e5a9c359bb40aac5d0853 (diff)
downloadgdb-4b7703adccf176d99bc0ee97efd40ee149762162.zip
gdb-4b7703adccf176d99bc0ee97efd40ee149762162.tar.gz
gdb-4b7703adccf176d99bc0ee97efd40ee149762162.tar.bz2
GDB crash while stepping into function.
* infrun.c (handle_inferior_event): Refetch the current frame after handling what.main_action, in case that pointer became dangling.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 3d6812d..426b816 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -4066,6 +4066,11 @@ infrun: not switching back to stepped thread, it has vanished\n");
return;
}
+ /* Re-fetch current thread's frame in case the code above caused
+ the frame cache to be re-initialized, making our FRAME variable
+ a dangling pointer. */
+ frame = get_current_frame ();
+
/* If stepping through a line, keep going if still within it.
Note that step_range_end is the address of the first instruction