Skip to content

Commit

Permalink
Merging r344605:
Browse files Browse the repository at this point in the history
------------------------------------------------------------------------
r344605 | jankratochvil | 2018-10-16 04:38:22 -0700 (Tue, 16 Oct 2018) | 12 lines

Fix: Assertion failed: (!m_first_die || m_first_die == m_die_array.front()), function ExtractDIEsRWLocked

xbolva00 bugreported $subj in: https://reviews.llvm.org/D46810#1247410
It can happen only from the line:
	m_die_array.back().SetEmptyChildren(true);

In the case DW_TAG_compile_unit has DW_CHILDREN_yes but there is only 0 (end of
list, no children present). Therefore the assertion can fortunately happen only
with a hand-crafted DWARF or with DWARF from some suboptimal compilers.

Differential Revision: https://reviews.llvm.org/D53255

------------------------------------------------------------------------

llvm-svn: 347030
  • Loading branch information
tstellar committed Nov 16, 2018
1 parent 35aa48a commit 85e1cc5
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
Expand Up @@ -261,7 +261,11 @@ void DWARFUnit::ExtractDIEsRWLocked() {
}

if (!m_die_array.empty()) {
lldbassert(!m_first_die || m_first_die == m_die_array.front());
if (m_first_die) {
// Only needed for the assertion.
m_first_die.SetEmptyChildren(m_die_array.front().GetEmptyChildren());
lldbassert(m_first_die == m_die_array.front());
}
m_first_die = m_die_array.front();
}

Expand Down

0 comments on commit 85e1cc5

Please sign in to comment.