GDB crash while stepping into function.
authorJoel Brobecker <brobecker@gnat.com>
Sat, 9 Jan 2010 04:36:00 +0000 (04:36 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Sat, 9 Jan 2010 04:36:00 +0000 (04:36 +0000)
        * infrun.c (handle_inferior_event): Refetch the current frame
        after handling what.main_action, in case that pointer became
        dangling.

gdb/ChangeLog
gdb/infrun.c

index 0a5b4b5..108476c 100644 (file)
@@ -1,5 +1,12 @@
 2010-01-09  Joel Brobecker  <brobecker@adacore.com>
 
+       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.
+
+2010-01-09  Joel Brobecker  <brobecker@adacore.com>
+
        Fix build failure of solaris-hosted cross debuggers.
        * ada-valprint.c, parse.c: Include defs.h before including ctype.h.
 
index 3d6812d..426b816 100644 (file)
@@ -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