Bug 13866 - crashes from stale frame_info *
Summary: crashes from stale frame_info *
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: backtrace (show other bugs)
Version: HEAD
: P2 normal
Target Milestone: ---
Assignee: Pedro Alves
URL:
Keywords:
Depends on:
Blocks: 11914
  Show dependency treegraph
 
Reported: 2012-03-18 18:20 UTC by Jan Kratochvil
Modified: 2012-07-14 20:50 UTC (History)
0 users

See Also:
Host:
Target: x86_64-unknown-linux-gnu
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Kratochvil 2012-03-18 18:20:01 UTC
https://bugzilla.redhat.com/show_bug.cgi?id=804256

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.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.14326&r2=1.14327
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/breakpoint.c.diff?cvsroot=src&r1=1.678&r2=1.679
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.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.14366&r2=1.14367
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/infrun.c.diff?cvsroot=src&r1=1.544&r2=1.545