http://sourceware.org/ml/gdb-patches/2014-02/msg00731.html Subject: [patch] gdb_assert -> complaint for weird DWARF --6TrnltStXW4iwmi0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, PR 16581: GDB crash on inherit_abstract_dies infinite recursion https://sourceware.org/bugzilla/show_bug.cgi?id=16581 fixed crash from an infinite recursion. But in rare cases the new code can now gdb_assert() due to weird DWARF file. I do not yet fully understand why the DWARF is as it is but just GDB should never crash due to invalid DWARF anyway. The "invalid" DWARF I see only in Fedora GCC build, not in FSF GCC build, more info at: https://bugzilla.redhat.com/show_bug.cgi?id=1069382 http://people.redhat.com/jkratoch/gcc-debuginfo-4.8.2-7.fc20.x86_64-gnatbind.debug Thanks, Jan --6TrnltStXW4iwmi0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="complaint.patch" gdb/ 2014-02-24 Jan Kratochvil * dwarf2read.c (process_die): Change gdb_assert to complaint. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 3eaa0b1..71f5d34 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -8029,7 +8029,13 @@ process_die (struct die_info *die, struct dwarf2_cu *cu) struct cleanup *in_process; /* We should only be processing those not already in process. */ - gdb_assert (!die->in_process); + if (die->in_process) + { + complaint (&symfile_complaints, + _("DIE at 0x%x attempted to be processed twice"), + die->offset.sect_off); + return; + } die->in_process = 1; in_process = make_cleanup (reset_die_in_process,die); --6TrnltStXW4iwmi0--