From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 41537 invoked by alias); 8 Jan 2020 13:42:32 -0000 Mailing-List: contact dwz-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: dwz-owner@sourceware.org Received: (qmail 41525 invoked by uid 89); 8 Jan 2020 13:42:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.100.3 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy= X-Spam-Status: No, score=-25.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on sourceware.org X-Spam-Level: X-HELO: mx2.suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Date: Wed, 01 Jan 2020 00:00:00 -0000 From: Tom de Vries To: dwz@sourceware.org, jakub@redhat.com Subject: [committed] Fix get_name in low-mem mode Message-ID: <20200108134226.GA2899@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-SW-Source: 2020-q1/txt/msg00015.txt Hi, When using --devel-dump-dups in low-mem mode for benchmark cc1 I run into a segfault: ... $ dwz cc1 -o 1 -l0 --devel-dump-dups ... Segmentation fault (core dumped) ... The segfault happens in get_AT (called from get_AT_string, called from get_name) due to trying to access invalidated fields in a DIE with die_collapsed_child set. Fix this by handling die_collapsed_child DIEs in get_name. Committed to trunk. Thanks, - Tom Fix get_name in low-mem mode 2020-01-08 Tom de Vries * dwz.c (get_name): Handle die->die_collapsed_child == 1. --- dwz.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dwz.c b/dwz.c index 8fac945..b4b8339 100644 --- a/dwz.c +++ b/dwz.c @@ -4380,6 +4380,8 @@ find_dups_fi (dw_die_ref parent) static const char * get_name (dw_die_ref die) { + if (die->die_collapsed_child) + return NULL; const char *name = get_AT_string (die, DW_AT_name); if (name) return name;