[PATCH] DWZ aborted "write_types: Assertion `ref && ref->die_dup == NULL'"

Mark Wielaard mark@klomp.org
Fri Feb 5 13:09:20 GMT 2021


Hi Alok,

On Fri, 2021-02-05 at 06:09 +0000, Sharma, Alok Kumar via Dwz wrote:
> Would you please review the attached patch containing modification of
> assert condition.
> It was required to fix an abort which seem to be incorrect.
> 
> There is an assert condition as "ref && ref->die_dup == NULL".
> As per definition of "struct dw_die", the structure fields starting
> from 'die_dup' are present only if 'die_toplevel' is 1. In line with
> this at multiple places in code, full/paritial memory is allocated for
> pointer of type dw_die.
> Ex.  die = pool_alloc (dw_die, offsetof (struct dw_die, die_dup));
> Due to this, since memory is not allocated for field die_dup onwards,
> it may contain junk values. Macro 'die_safe_dupe' must be used in place
> of directly accessing 'die_dup' field whenever required.
> 
>       * dwz.c (write_types): Use 'die_safe_dup' to access field 'die_dup'.

I think you analysis and the code fix are correct. Thanks.

This was probably missed before because -fdebug-types-section isn't the
default, so we are not seeing many DWARF files with debug types.

Do you have an example where this triggers?

Thanks,

Mark


More information about the Dwz mailing list