All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonghong Song <yonghong.song@linux.dev>
To: Alan Maguire <alan.maguire@oracle.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
	dwarves@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
	Andrii Nakryiko <andrii@kernel.org>,
	bpf@vger.kernel.org, Daniel Borkmann <daniel@iogearbox.net>,
	kernel-team@fb.com, Song Liu <song@kernel.org>
Subject: Re: [PATCH dwarves 3/3] dwarf_loader: Check DW_OP_[GNU_]entry_value for possible parameter matching
Date: Wed, 13 Nov 2024 10:27:32 -0800	[thread overview]
Message-ID: <548c7b6b-3b84-4053-baa7-72976731ab87@linux.dev> (raw)
In-Reply-To: <71778df3-62a6-4b1d-9ccf-4a8eb0e23828@oracle.com>




On 11/13/24 9:33 AM, Alan Maguire wrote:
> On 12/11/2024 19:10, Arnaldo Carvalho de Melo wrote:
>> On Tue, Nov 12, 2024 at 06:33:38PM +0000, Alan Maguire wrote:
>>> On 12/11/2024 17:07, Yonghong Song wrote:
>>>> On 11/12/24 8:56 AM, Alan Maguire wrote:
>>>>> On 12/11/2024 01:51, Yonghong Song wrote:
>>>>>> On 11/11/24 7:39 AM, Alan Maguire wrote:
>>>>> "for one of internal 6.11 kernel, there are 62498 functions in BTF and
>>>>> perf_event_read() is not there. With this patch, there are 61552
>>>>> functions in BTF and perf_event_read() is included."
>>>>> These numbers suggest you lost nearly 1000 functions when building
>>>>> vmlinux BTF with pahole using this series. That's the part I don't
>>>>> understand - we should just see a gain in numbers of functions in
>>>>> vmlinux BTF, right? Did you mean 62552 functions rather than 61552
>>>>> perhaps?tion
>>   
>>>> Sorry, really embarrassing. it is typo. Indeed it should be 62552 functions
>>>> in BTF instead.
>>   
>>> No problem, makes perfect sense now, thanks! I'm trying to reproduce the
>>> core dumps Eduard saw now with this setup; I'll report back if I manage
>>> to do so and see if locks as Jiri and Arnaldo suggested help. If so a v2
>>> along the lines of Eduard's suggested change plus locking might be the
>>> best approach, what do you think? Thanks!
>> So the idea is to try to see what are the data structures that are
>> being corrupted in the features we use from elfutils libraries and check
>> how they are being protected via their non-default enabled experimental
>> thread safety locks and then use it before calling their functions that
>> would use those locks.
>>
>> At some point we need to do some feature check to see if the lock is
>> enabled there and avoid adding it from pahole's side.
>>
>> I.e. a transitional strategy to keep pahole -j feature that works with
>> older elfutils versions as well as with modern, thread safe ones.
>>
>> This was used with the existing libdw__lock we have in the pahole
>> codebase with, AFAIK, good results.
>>
> Thanks for the additional info! From Eduard's analysis, it seems like it
> is safer to take the libdw__lock around dwarf_getlocation(s), since
> multiple threads can access the CU location cache. I've tried tweaking
> Eduard's modification of Yonghong's original patch and adding a second
> patch to add locking; with these two patches applied
>
> - we see the desired behaviour where perf_event_read() is present in
> BTF; and
> - we don't see any segmentation faults after ~700 iterations where I saw
> one every 200 or so before
>
> Yonghong, Eduard - do these changes look okay from your side? Feel free
> to resubmit if so (fixing up attributions as you see fit if they look
> wrong of course). Thanks!

Thanks Alan for working on this. The following are some suggestions for patch one:
   1. rename __dwarf_getlocations() to __parameter__locations()?
   2. rename param_reg_at_entry to parameter__locations()?
   3. You missed the following:
static int param_reg_at_entry(Dwarf_Attribute *attr, int expected_reg)
{
...
         if (first_expr)                     // this line
                 return first_expr->atom;    // this line
         return -1;
}

Patch 2 needs adjustment as well due to the above point #3.
Otherwise, LGTM. Since you are already preparing the patch,
please go ahead to pose v2 after you fixing the above things.

>
> Alan


  reply	other threads:[~2024-11-13 18:27 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-08 18:05 [PATCH dwarves 0/3] Check DW_OP_[GNU_]entry_value for possible parameter matching Yonghong Song
2024-11-08 18:05 ` [PATCH dwarves 1/3] dwarf_loader: Refactor function parameter__new() Yonghong Song
2024-11-11 11:26   ` Alan Maguire
2024-11-08 18:05 ` [PATCH dwarves 2/3] dwarf_loader: Refactor function check_dwarf_locations() Yonghong Song
2024-11-08 18:05 ` [PATCH dwarves 3/3] dwarf_loader: Check DW_OP_[GNU_]entry_value for possible parameter matching Yonghong Song
2024-11-10 11:38   ` Eduard Zingerman
2024-11-11  8:01     ` Eduard Zingerman
2024-11-11 12:36       ` Jiri Olsa
2024-11-11 13:42         ` Arnaldo Carvalho de Melo
2024-11-15 16:26           ` elfutils thread-safety (Was: [PATCH dwarves 3/3] dwarf_loader: Check DW_OP_[GNU_]entry_value for possible parameter matching) Mark Wielaard
2024-11-11 18:51     ` [PATCH dwarves 3/3] dwarf_loader: Check DW_OP_[GNU_]entry_value for possible parameter matching Yonghong Song
2024-11-11  9:54   ` Jiri Olsa
2024-11-11 18:54     ` Yonghong Song
2024-11-11 15:39   ` Alan Maguire
2024-11-12  1:51     ` Yonghong Song
2024-11-12 16:56       ` Alan Maguire
2024-11-12 17:07         ` Yonghong Song
2024-11-12 18:33           ` Alan Maguire
2024-11-12 18:51             ` Yonghong Song
2024-11-12 19:10             ` Arnaldo Carvalho de Melo
2024-11-13 17:33               ` Alan Maguire
2024-11-13 18:27                 ` Yonghong Song [this message]
2024-11-14 12:16                   ` Alan Maguire
2024-11-14 16:29                     ` Yonghong Song

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=548c7b6b-3b84-4053-baa7-72976731ab87@linux.dev \
    --to=yonghong.song@linux.dev \
    --cc=acme@kernel.org \
    --cc=alan.maguire@oracle.com \
    --cc=andrii@kernel.org \
    --cc=arnaldo.melo@gmail.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=dwarves@vger.kernel.org \
    --cc=kernel-team@fb.com \
    --cc=song@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.