On 2010-12-07 at 01:06:55 [+0100], anevilyak@xxxxxxxxx wrote: > Author: anevilyak > Date: 2010-12-07 01:06:55 +0100 (Tue, 07 Dec 2010) > New Revision: 39754 > Changeset: http://dev.haiku-os.org/changeset/39754 > > Modified: > haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp > Log: > When parsing the CIE, the offset being passed to > _ParseFrameInfoInstructions() was not taking the initial CIE offset into > account. This led to completely the wrong instructions being parsed, which > in turn resulted in stack frames for some functions failing to unwind > correctly. > > > Modified: haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp > =================================================================== > --- haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp 2010-12-06 > 23:58:48 UTC (rev 39753) > +++ haiku/trunk/src/apps/debugger/dwarf/DwarfFile.cpp 2010-12-07 > 00:06:55 UTC (rev 39754) > @@ -1613,8 +1613,8 @@ > if (remaining < 0) > return B_BAD_DATA; > > - return _ParseFrameInfoInstructions(unit, context, dataReader.Offset(), > - remaining); > + return _ParseFrameInfoInstructions(unit, context, cieOffset > + + dataReader.Offset(), remaining); > } That certainly explains why it worked in many cases, as there's often only one CIE at offset 0. BTW, for aesthetical/readability reasons I would try to avoid breaking lines within function arguments. CU, Ingo