This is the mail archive of the
mailing list for the GDB project.
Re: [PATCH 1/2] avoid infinite loop with bad debuginfo
- From: Tom Tromey <tromey at redhat dot com>
- To: Pedro Alves <palves at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Tue, 19 Nov 2013 08:47:12 -0700
- Subject: Re: [PATCH 1/2] avoid infinite loop with bad debuginfo
- Authentication-results: sourceware.org; auth=none
- References: <1384375873-32160-1-git-send-email-tromey at redhat dot com> <1384375873-32160-2-git-send-email-tromey at redhat dot com> <52850730 dot 1060109 at redhat dot com>
>>>>> "Pedro" == Pedro Alves <firstname.lastname@example.org> writes:
>> + error (_("infinite loop while fetching a register; "
>> + "probably bad debug info"));
Pedro> What swallows this error?
Just getting back to answering this question...
It is caught in dwarf2_tailcall_sniffer_first. The straightforward idea
here of removing the TRY_CATCH from this function (and fixing up
cleanups in dwarf2_frame_cache) fails because something (I didn't try to
find what) modifies the frame before the sniffer fails; causing
frame_cleanup_after_sniffer to fail an assertion.
This is all moot if I apply your patches in this area, because they move
the call to dwarf2_tailcall_sniffer_first out of the spot where it can