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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox