public inbox for dwz@sourceware.org
 help / color / mirror / Atom feed
From: "Sharma, Alok Kumar" <AlokKumar.Sharma@amd.com>
To: "dwz@sourceware.org" <dwz@sourceware.org>
Cc: "George, Jini Susan" <JiniSusan.George@amd.com>,
	"E, Nagajyothi" <Nagajyothi.E@amd.com>,
	"Achra, Nitika" <Nitika.Achra@amd.com>
Subject: [PATCH] DWZ aborted "write_types: Assertion `ref && ref->die_dup == NULL'"
Date: Fri, 5 Feb 2021 06:09:57 +0000	[thread overview]
Message-ID: <BYAPR12MB3223E443D810D86923E2051C9EB29@BYAPR12MB3223.namprd12.prod.outlook.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 831 bytes --]

Hi all,

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'.


Regards,
Alok

[-- Attachment #2: 0001-DWZ-aborted-write_types-Assertion-ref-ref-die_dup-NU.patch --]
[-- Type: application/octet-stream, Size: 1454 bytes --]

From a3274a19e5b73b7e41e74f6ddfcdd2073f83ab63 Mon Sep 17 00:00:00 2001
From: Alok Kumar Sharma <AlokKumar.Sharma@amd.com>
Date: Mon, 1 Feb 2021 23:57:51 +0530
Subject: [PATCH] DWZ aborted "write_types: Assertion `ref && ref->die_dup ==
 NULL'"

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' in assert condition here.

      * dwz.c (write_types): Use 'die_safe_dup' to access field 'die_dup'.
---
 dwz.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dwz.c b/dwz.c
index 1db93dd..920a9b8 100644
--- a/dwz.c
+++ b/dwz.c
@@ -12868,7 +12868,7 @@ write_types (void)
       memcpy (ptr, inptr - 8, 8);
       ptr += 8;
       ref = off_htab_lookup (cu, cu->cu_offset + read_32 (inptr));
-      assert (ref && ref->die_dup == NULL);
+      assert (ref && die_safe_dup(ref) == NULL);
       write_32 (ptr, ref->u.p2.die_new_offset);
       ptr = write_die (ptr, cu, cu->cu_die, NULL, NULL, NULL);
       assert (types + next_off == ptr);
-- 
2.17.1


             reply	other threads:[~2021-02-05  6:09 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-05  6:09 Sharma, Alok Kumar [this message]
2021-02-05 13:09 ` Mark Wielaard
2021-02-05 13:21   ` George, Jini Susan
2021-02-06  3:01     ` Mark Wielaard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BYAPR12MB3223E443D810D86923E2051C9EB29@BYAPR12MB3223.namprd12.prod.outlook.com \
    --to=alokkumar.sharma@amd.com \
    --cc=JiniSusan.George@amd.com \
    --cc=Nagajyothi.E@amd.com \
    --cc=Nitika.Achra@amd.com \
    --cc=dwz@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).