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 0a5b4b51c7b1936eff6bc4d0b8fa192a76d97cc3..108476c759037d18e6d224f352691c2d3a391bac 100644 (file)
@@ -1,3 +1,10 @@
+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.
index 3d6812d2e3bf42bfbb1974979c54c3312f24ccaa..426b8167e650f2e7089e037fbc921459416b9e02 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