From: Philippe Waroquiers Date: Mon, 6 Oct 2014 21:46:43 +0000 (+0000) Subject: fix 339721 assertion 'check_sibling == sibling' failed in readdwarf3.c ... X-Git-Tag: svn/VALGRIND_3_11_0~940 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=623a54340ef0acd5b7ec74b6c3b90ee77758e1bd;p=thirdparty%2Fvalgrind.git 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 git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14603 --- diff --git a/NEWS b/NEWS index a9c16fa4a5..de86c41c98 100644 --- a/NEWS +++ b/NEWS @@ -32,11 +32,12 @@ where XXXXXX is the bug number as listed below. 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) diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c index 995ef58bbd..1a933d9bfe 100644 --- a/coregrind/m_debuginfo/readdwarf3.c +++ b/coregrind/m_debuginfo/readdwarf3.c @@ -1498,7 +1498,7 @@ UInt get_Form_szB (CUConst* cc, DW_FORM form ) 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: