public inbox for elfutils@sourceware.org
 help / color / mirror / Atom feed
From: "mark at klomp dot org" <sourceware-bugzilla@sourceware.org>
To: elfutils-devel@sourceware.org
Subject: [Bug libdw/29434] Memory leak in `dwarf_getscopes`
Date: Wed, 22 Feb 2023 17:18:51 +0000	[thread overview]
Message-ID: <bug-29434-10460-owwTJ2AJMX@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-29434-10460@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=29434

--- Comment #17 from Mark Wielaard <mark at klomp dot org> ---
So the code here changed a little with this patch:

commit b7c7d8776ed46e2237d18fb15c6b72e83cfa259b
Author: Mark Wielaard <mark@klomp.org>
Date:   Sun Jan 22 00:31:57 2023 +0100

    libdw: Search for abstract origin in the correct CU

    With gcc -flto the abstract origin of an inlined subroutine
    could be in a different CU. dwarf_getscopes might return an
    empty scope if it cannot find the abstract origin scope. So
    make sure to search in the

    We also tried to add the origin match in pc_record directly
    in the current inlined scope. This always failed, causing
    to do a needless traversal, followed by the full CU scan in
    dwarf_getscopes. Just always stop the pc_record search and
    then do the CU origin_match in dwarf_getscopes.

    Signed-off-by: Mark Wielaard <mark@klomp.org>

Which makes the condition of the first check slightly different:

-  if (result == 0 && a.scopes != NULL)
-    result = __libdw_visit_scopes (0, &cu, NULL, &origin_match, NULL, &a);
+  if (result >= 0 && a.scopes != NULL && a.inlined > 0)
+    {
+      /* We like the find the inline function's abstract definition
+         scope, but that might be in a different CU.  */
+      cu.die = CUDIE (a.inlined_origin.cu);
+      result = __libdw_visit_scopes (0, &cu, NULL, &origin_match, NULL, &a);
+    }

So with that I think my proposed patch in comment #3 might work.
But I have not been able to replicate the issue. So cannot easily check.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  parent reply	other threads:[~2023-02-22 17:18 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-01 16:07 [Bug libdw/29434] New: " godlygeek at gmail dot com
2022-08-04 14:30 ` [Bug libdw/29434] " mark at klomp dot org
2022-08-04 14:43 ` pablogsal at gmail dot com
2022-08-04 15:13 ` mark at klomp dot org
2022-08-04 15:52 ` pablogsal at gmail dot com
2022-08-04 15:57 ` mark at klomp dot org
2022-08-04 16:05 ` pablogsal at gmail dot com
2022-08-04 16:07 ` pablogsal at gmail dot com
2022-08-04 16:11 ` pablogsal at gmail dot com
2022-08-29 15:28 ` mark at klomp dot org
2022-10-27 20:37 ` mark at klomp dot org
2022-11-03 16:21 ` pablogsal at gmail dot com
2022-11-03 16:22 ` pablogsal at gmail dot com
2022-11-03 16:44 ` pablogsal at gmail dot com
2022-11-03 16:45 ` pablogsal at gmail dot com
2022-11-03 16:58 ` pablogsal at gmail dot com
2022-12-21 13:06 ` mark at klomp dot org
2023-02-22 17:18 ` mark at klomp dot org [this message]
2023-02-22 22:41 ` mark at klomp dot org
2023-02-28 11:38 ` mark at klomp dot org

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=bug-29434-10460-owwTJ2AJMX@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=elfutils-devel@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).