[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug binutils/6832] Crash while handling DW_AT_abstract_origin for a las
From: |
divis1969 at gmail dot com |
Subject: |
[Bug binutils/6832] Crash while handling DW_AT_abstract_origin for a last comp unit |
Date: |
11 Dec 2009 14:19:12 -0000 |
------- Additional Comments From divis1969 at gmail dot com 2009-12-11 14:19
-------
Hi,
While running my program with BFD 2.20.51.20090916 (which I had grabbed from
GDB
7.0) I see there is still a possibility for the problem reported by this bug.
It does not crash but produces a message like
Dwarf Error: Could not find abbrev number
The problem, on my mind, is caused by the following sequence:
My program tries to locate an address and find the line number, function etc.
The ELF file has just one debug info section.
One of the comp unit was already loaded (by parse_comp_unit() I suppose) but
scan_unit_for_symbols() was not yet called yet for it.
At some stage, all the comp units of this alone sections are loaded and parsed
and stash->sec_info_ptr was advanced to the end of this section (line 3224 of
dwarf2.c)
Finally, when find_line tries to find locate some address in this unit and
scan_unit_for_symbols is called, it produces such an error message. This
happens
when find_abstract_instance_name() tries to read some attribute, referred by
DW_FORM_ref_addr. It tries to read from beyond the scope of the debug info
section due to line 1751:
info_ptr = unit->stash->sec_info_ptr + die_ref;
As I said before, unit->stash->sec_info_ptr is pointing to the end if section.
Dmitry
--
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|FIXED |
http://sourceware.org/bugzilla/show_bug.cgi?id=6832
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug binutils/6832] Crash while handling DW_AT_abstract_origin for a last comp unit,
divis1969 at gmail dot com <=