Bug 13866

Summary: crashes from stale frame_info *
Product: gdb Reporter: Jan Kratochvil <jan.kratochvil>
Component: backtraceAssignee: Pedro Alves <palves>
Severity: normal    
Priority: P2    
Version: HEAD   
Target Milestone: ---   
Host: Target: x86_64-unknown-linux-gnu
Build: Last reconfirmed:
Bug Depends on:    
Bug Blocks: 11914    

Description Jan Kratochvil 2012-03-18 18:20:01 UTC

Even FSF GDB HEAD has still stale frame_info pointers:

#1  in freehook (ptr=0xb3c45e0, caller=0x825759) at mcheck.c:211
#2  in xfree (ptr=0xb3c45e0) at ./common/common-utils.c:107
#3  in obstack_free (h=0x1d4ac20, obj=0x0) at obstack.c:367
#4  in reinit_frame_cache () at frame.c:1542 
#5  in switch_to_thread (ptid=...) at thread.c:989
#6  in switch_to_program_space_and_thread (pspace=0x27c38a0) at progspace.c:494 
#7  in skip_prologue_sal (sal=0x24ec190) at symtab.c:2694
#8  in decode_all_digits () at linespec.c:2523
#9  in decode_line_internal () at linespec.c:1132
#10 in decode_line_1 (flags=1default_line=81) at linespec.c:1344
#11 in until_break_command (arg="",from_tty=1,anywhere=0) at breakpoint.c:10532

There are currently too many situations with stale frame_info * after switch_to_* invalidate them now, IMO reinit_frame_cache needs to be removed in these simple cases.
Comment 1 cvs-commit@gcc.gnu.org 2012-06-05 19:50:56 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	palves@sourceware.org	2012-06-05 19:50:51

Modified files:
	gdb            : ChangeLog breakpoint.c 

Log message:
	2012-06-05  Pedro Alves  <palves@redhat.com>
	PR backtrace/13866
	* breakpoint.c (until_break_command): Only fetch the selected
	frame after decode_line_1.

Comment 2 Jan Kratochvil 2012-06-12 19:51:43 UTC
There are currently no known bugs anymore.

Still some more proactive protection would be useful.
Comment 3 cvs-commit@gcc.gnu.org 2012-06-14 21:15:25 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	macro@sourceware.org	2012-06-14 21:15:20

Modified files:
	gdb            : ChangeLog infrun.c 

Log message:
	PR backtrace/13866
	* infrun.c (handle_inferior_event): Re-fetch frame and gdbarch
	after hiding inline functions.