linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Veronika Molnarova <vmolnaro@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	linux-perf-users@vger.kernel.org, acme@redhat.com,
	namhyung@kernel.org, mpetlan@redhat.com, irogers@google.com,
	atrajeev@linux.vnet.ibm.com
Subject: Re: [PATCH v2 00/11] perftool-testsuite 2nd batch
Date: Thu, 12 Sep 2024 10:07:17 -0300	[thread overview]
Message-ID: <ZuLnhbC4eAmKzVO5@x1> (raw)
In-Reply-To: <ZtoDUPuP-fEbC6sg@x1>

On Thu, Sep 05, 2024 at 04:15:28PM -0300, Arnaldo Carvalho de Melo wrote:
> On Thu, Sep 05, 2024 at 04:04:29PM -0300, Arnaldo Carvalho de Melo wrote:
> > So, I proposed that if we get that error message (A function DIE doesn't
> > have decl_line. Maybe broken DWARF?) we should skip it, but Veronika did
> > the right thing and asked if that wasn't really papering over some
> > problem and pointed to a patch that addressed a problem that lead to
> > that exact same message being produced, but that didn't help with our
> > current case, with another blacklisted function, warn_thunk_thunk.

> > You mentioned that this is an asm function, so no DWARF, let alone
> > correct DWARF, so the message is kinda ok, but we can't use that message
> > as it could paper over real problems like the one fixed by the patch
> > that Veronika pointed out.

> > How to figure out if a function has valid DWARF? Maybe for the moment we
> > should have _another_ blacklist, one for functions in the blacklist that
> > have no valid DWARF? A blacklist's blacklist?
 
> We have the needed info to provide a more informative warning:

So, perhaps we should, in the test, when we get that "broken dwarf"
output, look at the debuginfo file for the kernel to see if the function
is one in a DW_UT_compile (CU) that has 

     <da27a>   DW_AT_language    : 32769 (MIPS assembler)

And then just have a -vv output stating that that function is being
skipped because it is DWARF from assembler?

Veronika, would you be willing to try to do that?

Thanks,

- Arnaldo
 
>  <1><da258>: Abbrev Number: 0
>   Compilation Unit @ offset 0xda259:
>    Length:        0x3f (32-bit)
>    Version:       5
>    Unit Type:     DW_UT_compile (1)
>    Abbrev Offset: 0x74c8
>    Pointer Size:  8
>  <0><da265>: Abbrev Number: 1 (DW_TAG_compile_unit)
>     <da266>   DW_AT_stmt_list   : 0x12cbd
>     <da26a>   DW_AT_ranges      : 0x2d6e
>     <da26e>   DW_AT_name        : (indirect string, offset: 0x1ec2f): /home/acme/git/linux/arch/x86/entry/entry.S
>     <da272>   DW_AT_comp_dir    : (indirect string, offset: 0x1be93): /home/acme/git/build/v6.11-rc5+
>     <da276>   DW_AT_producer    : (indirect string, offset: 0x1beb3): GNU AS 2.41
>     <da27a>   DW_AT_language    : 32769 (MIPS assembler)
>  <1><da27c>: Abbrev Number: 2 (DW_TAG_subprogram)
>     <da27d>   DW_AT_name        : (indirect string, offset: 0x1ec5b): entry_ibpb
>     <da281>   DW_AT_external    : 1
>     <da281>   DW_AT_type        : <0xda29a>
>     <da282>   DW_AT_low_pc      : 0xffffffff82062790
>     <da28a>   DW_AT_high_pc     : 23
>  <1><da28b>: Abbrev Number: 2 (DW_TAG_subprogram)
>     <da28c>   DW_AT_name        : (indirect string, offset: 0x1ec66): warn_thunk_thunk
>     <da290>   DW_AT_external    : 1
>     <da290>   DW_AT_type        : <0xda29a>
>     <da291>   DW_AT_low_pc      : 0xffffffff81008060
>     <da299>   DW_AT_high_pc     : 45
>  <1><da29a>: Abbrev Number: 3 (DW_TAG_unspecified_type)
> 
> root@number:~# readelf -wi `pahole --running_kernel_vmlinux` | grep warn_thunk_thunk
>     <da28c>   DW_AT_name        : (indirect string, offset: 0x1ec66): warn_thunk_thunk
> root@number:~# pahole --running_kernel_vmlinux
> /lib/modules/6.11.0-rc5+/build/vmlinux
> root@number:~# perf buildid-list -k
> 4dd7f9c4507b82a5bf90671d524e5bb308104ffa
> root@number:~# file /lib/modules/6.11.0-rc5+/build/vmlinux
> /lib/modules/6.11.0-rc5+/build/vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=4dd7f9c4507b82a5bf90671d524e5bb308104ffa, with debug_info, not stripped
> root@number:~# perf buildid-list -i /lib/modules/6.11.0-rc5+/build/vmlinux
> 4dd7f9c4507b82a5bf90671d524e5bb308104ffa
> root@number:~#
> 
> - Arnaldo
> 
> > 
> > - Arnaldo
> >  
> > > > > >>   Error: Failed to add events.
> > > > > >> root@x1:~#
> > > > > >> root@x1:~# cat /tmp/perftool-testsuite_probe.RJh/perf_probe/logs/adding_blacklisted_list.log 
> > > > > >> root@x1:~# cat /tmp/perftool-testsuite_probe.RJh/perf_probe/logs/adding_blacklisted.log 
> > > > > >> root@x1:~#
> > > > > >>
> > > > > >> So is it just a matter of adding this output to the expected outputs?
> > > > > >> In test_adding_blacklisted.sh?
> > > > > > 
> > > > > > Did the patch below, now it passes, Ack?
> > > > > > 
> > > > > > root@x1:~# export PERFTEST_KEEP_LOGS=y
> > > > > > root@x1:~# perf test 88
> > > > > >  88: perftool-testsuite_probe                                        : Ok
> > > > > > root@x1:~#
> > > > > > 
> > > > > > Or am I missing the point? :-)
> > 
> > > > > Yeah, that would fix the test case, the question is whether we should
> > 
> > > > I was lazy, but yeah, that thought crossed my mind, good thing you did
> > > > the due diligence and found that patch! Looking at it now.
> > 
> > > > > accept it as a possible output. Found some old patch that should have
> > > > > fixed the mentioned issue: 
> > > > > https://lore.kernel.org/all/20230628082337.1857302-3-georgmueller@gmx.net/
> > 
> > > > I updated Masami's e-mail to a more recent one, Masami-san, wdyt? Can I
> > > > have your opinion on the patch pointed out by Veronika?
> >  
> > > Thanks for update my email. Yeah, it looks good to me.
> >  
> > > Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> > 
> > Unfortunately that cset is already there:
> > 
> > commit c66e1c68c13b872505f25ab641c44b77313ee7fe
> > Author: Georg Müller <georgmueller@gmx.net>
> > Date:   Wed Jun 28 10:45:51 2023 +0200
> > 
> >     perf probe: Read DWARF files from the correct CU
> >     
> >     After switching from dwarf_decl_file() to die_get_decl_file(), it is not
> >     possible to add probes for certain functions:
> >     
> >       $ perf probe -x /usr/lib/systemd/systemd-logind match_unit_removed
> >       A function DIE doesn't have decl_line. Maybe broken DWARF?
> >       A function DIE doesn't have decl_line. Maybe broken DWARF?
> >       Probe point 'match_unit_removed' not found.
> >          Error: Failed to add events.
> 
>  
> > 
> > ⬢[acme@toolbox perf-tools-next]$ git tag --contains c66e1c68c13b872505f25ab641c44b77313ee7fe | grep ^v6.1
> > v6.10
> > v6.10-rc1
> > v6.10-rc2
> > v6.10-rc3
> > v6.10-rc4
> > v6.10-rc5
> > v6.10-rc6
> > v6.10-rc7
> > v6.11-rc1
> > v6.11-rc2
> > v6.11-rc3
> > v6.11-rc4
> > v6.11-rc5
> > v6.11-rc6
> > ⬢[acme@toolbox perf-tools-next]$
> > 
> > But..
> > 
> > root@number:~# perf test -vvvvv testsuite_probe |& head
> > capget syscall failed (No such file or directory - 2) fall back on root check
> >  88: perftool-testsuite_probe:
> > --- start ---
> > test child forked, pid 511749
> > Line did not match any pattern: "A function DIE doesn't have decl_line. Maybe broken DWARF?"
> > Line did not match any pattern: "A function DIE doesn't have decl_line. Maybe broken DWARF?"
> > -- [ FAIL ] -- perf_probe :: test_adding_blacklisted :: adding blacklisted function warn_thunk_thunk (output regexp parsing)
> > -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: listing blacklisted probe (should NOT be listed)
> > ## [ FAIL ] ## perf_probe :: test_adding_blacklisted SUMMARY :: 1 failures found
> > -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission :: 
> > root@number:~# perf -v
> > perf version 6.11.rc6.g69e90b02e611
> > root@number:~#

  reply	other threads:[~2024-09-12 13:07 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-24 13:07 [PATCH 00/11] perftool-testsuite 2nd batch Michael Petlan
2024-06-24 13:07 ` [PATCH 01/11] perf tests shell: Skip base_* dirs in test script search Michael Petlan
2024-06-24 13:08 ` [PATCH 02/11] perf testsuite: Merge settings files for shell tests Michael Petlan
2024-06-24 13:08 ` [PATCH 03/11] perf testsuite: Fix shellcheck warnings Michael Petlan
2024-06-24 13:08 ` [PATCH 04/11] perf testsuite probe: Add test for blacklisted kprobes handling Michael Petlan
2024-06-24 13:08 ` [PATCH 05/11] perf testsuite probe: Add test for basic perf-probe options Michael Petlan
2024-06-24 13:08 ` [PATCH 06/11] perf testsuite probe: Add test for invalid options Michael Petlan
2024-06-24 13:08 ` [PATCH 07/11] perf testsuite probe: Add test for line semantics Michael Petlan
2024-06-24 13:08 ` [PATCH 08/11] perf testsuite: Add common output checking helper Michael Petlan
2024-06-24 13:08 ` [PATCH 09/11] perf testsuite report: Add test for perf-report basic functionality Michael Petlan
2024-06-24 13:08 ` [PATCH 10/11] perf testsuite report: Add test case for perf report Michael Petlan
2024-06-24 13:08 ` [PATCH 11/11] perf testsuite: Install perf-report tests Michael Petlan
2024-06-27 22:29 ` [PATCH 00/11] perftool-testsuite 2nd batch Namhyung Kim
2024-07-02 11:08   ` [PATCH v2 " vmolnaro
2024-07-02 11:08     ` [PATCH v2 01/11] perf tests shell: Skip base_* dirs in test script search vmolnaro
2024-07-02 11:08     ` [PATCH v2 02/11] perf testsuite: Merge settings files for shell tests vmolnaro
2024-07-02 11:08     ` [PATCH v2 03/11] perf testsuite: Fix shellcheck warnings vmolnaro
2024-07-02 11:08     ` [PATCH v2 04/11] perf testsuite probe: Add test for blacklisted kprobes handling vmolnaro
2024-07-02 11:08     ` [PATCH v2 05/11] perf testsuite probe: Add test for basic perf-probe options vmolnaro
2024-07-02 11:08     ` [PATCH v2 06/11] perf testsuite probe: Add test for invalid options vmolnaro
2024-07-02 11:08     ` [PATCH v2 07/11] perf testsuite probe: Add test for line semantics vmolnaro
2024-07-02 11:08     ` [PATCH v2 08/11] perf testsuite: Add common output checking helper vmolnaro
2024-07-02 11:08     ` [PATCH v2 09/11] perf testsuite report: Add test for perf-report basic functionality vmolnaro
2024-07-02 11:08     ` [PATCH v2 10/11] perf testsuite report: Add test case for perf report vmolnaro
2024-07-02 11:08     ` [PATCH v2 11/11] perf testsuite: Install perf-report tests vmolnaro
2024-08-28 14:10     ` [PATCH v2 00/11] perftool-testsuite 2nd batch Veronika Molnarova
2024-08-28 20:39       ` Arnaldo Carvalho de Melo
2024-08-29 11:29         ` [PATCH v2 01/11] perf tests shell: Skip base_* dirs in test script search vmolnaro
2024-08-29 11:29         ` [PATCH v2 11/11] perf testsuite: Install perf-report tests vmolnaro
2024-08-30 15:27         ` [PATCH v2 00/11] perftool-testsuite 2nd batch Arnaldo Carvalho de Melo
2024-09-02 14:05           ` Veronika Molnarova
2024-09-02 14:31             ` Arnaldo Carvalho de Melo
2024-09-02 14:41               ` Arnaldo Carvalho de Melo
2024-09-02 14:42                 ` Arnaldo Carvalho de Melo
2024-09-02 15:10                 ` Veronika Molnarova
2024-09-02 18:46                   ` Arnaldo Carvalho de Melo
2024-09-02 21:00                     ` Arnaldo Carvalho de Melo
2024-09-05 15:11                     ` Masami Hiramatsu
2024-09-05 19:04                       ` Arnaldo Carvalho de Melo
2024-09-05 19:15                         ` Arnaldo Carvalho de Melo
2024-09-12 13:07                           ` Arnaldo Carvalho de Melo [this message]
2024-09-19 13:14                             ` Veronika Molnarova
2024-09-26 22:33                               ` Namhyung Kim

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=ZuLnhbC4eAmKzVO5@x1 \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=irogers@google.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mpetlan@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=vmolnaro@redhat.com \
    /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 NNTP newsgroup(s).