|
From: <sv...@va...> - 2014-10-06 21:46:52
|
Author: philippe
Date: Mon Oct 6 22:46:43 2014
New Revision: 14603
Log:
fix 339721 assertion 'check_sibling == sibling' failed in readdwarf3.c ...
The skip code was wrongly skipping 16 bytes, while only 8 are read
for a DW_FORM_ref_sig8.
Note that the problem is made visible by an assert when using
--trace-symtab=yes but in fact this is a real bug in the dwarf reader,
that was introduced in one of the optimisations done for the inline info.
It can manifest itself with other symptoms:
One of the 2 following assertions can fail:
vg_assert (check_sibling == sibling);
vg_assert (get_position_of_Cursor (&check_skip)
== get_position_of_Cursor (&c));
Or the following error can be given:
--29973-- WARNING: Serious error when reading debug info
--29973-- When reading debug info from /home/philippe/valgrind/trunk_untouched/memcheck/tests/dw4:
--29973-- Overrun whilst reading .debug_info section
Modified:
trunk/NEWS
trunk/coregrind/m_debuginfo/readdwarf3.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Oct 6 22:46:43 2014
@@ -32,11 +32,12 @@
339156 gdbsrv not called for fatal signal
339442 Fix testsuite build failure on OS X 10.9
339645 Use correct tag names in sys_getdents/64 wrappers
-n-i-bz Old STABS code is still being compiled, but never used. Remove it.
-n-i-bz Fix compilation on distros with glibc < 2.5
339182 ppc64: AvSplat ought to load destination vector register with 16/16
bytes stored prior
339433 ppc64 lxvw4x instruction uses four 32-byte loads
+339721 assertion 'check_sibling == sibling' failed in readdwarf3.c ...
+n-i-bz Old STABS code is still being compiled, but never used. Remove it.
+n-i-bz Fix compilation on distros with glibc < 2.5
Release 3.10.0 (10 September 2014)
Modified: trunk/coregrind/m_debuginfo/readdwarf3.c
==============================================================================
--- trunk/coregrind/m_debuginfo/readdwarf3.c (original)
+++ trunk/coregrind/m_debuginfo/readdwarf3.c Mon Oct 6 22:46:43 2014
@@ -1498,7 +1498,7 @@
case DW_FORM_block:
return VARSZ_FORM;
case DW_FORM_ref_sig8:
- return 8 + 8;
+ return 8;
case DW_FORM_indirect:
return VARSZ_FORM;
case DW_FORM_GNU_ref_alt:
|