mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] perf test: Fix perf probe testsuite
@ 2026-11-05  7:17 Namhyung Kim
  2026-11-05 15:08 ` James Clark
  0 siblings, 1 reply; 3+ messages in thread
From: Namhyung Kim @ 2026-11-05  7:17 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Ian Rogers, James Clark
  Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users, Jakub Brnak, Michael Petlan

The perf probe test suite fails on my machine.  It seems it's because
the kernel debug info is not available.  Actually NO_DEBUGINFO is to
check the condition and skip affected tests.

But it didn't work well as the skip_if_no_debuginfo function misses a
new error string for v7.0+ kernels.  Internally it uses the
add_probe_vfs_getname() to check if perf probe handles debuginfo and
check the error string.  But it didn't add the new error string.

  "Could not find probeable line"

With that added, it now passes like below:

  $ sudo perf test -vv 189
  Not taking turns using the perf mlock budget: nothing can exhaust it
  189: perftool-testsuite_probe:
  ---- start ----
  test child forked, pid 26135
  Probing warn_thunk_thunk
  -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: adding blacklisted function warn_thunk_thunk
  -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: listing blacklisted probe (should NOT be listed)
  ## [ PASS ] ## perf_probe :: test_adding_blacklisted SUMMARY
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission ::
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission :: -a
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission :: --add
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf list
  -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due to missing debuginfo :: testcase skipped
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: using added probe
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: deleting added probe
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing removed probe (should NOT be listed)
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: dry run :: adding probe
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: first probe adding
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: second probe adding (without force)
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: second probe adding (with force)
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: using doubled probe
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: removing multiple probes
  Regexp not found: "probe:vfs_mknod"
  Regexp not found: "probe:vfs_create"
  Regexp not found: "probe:vfs_rmdir"
  Regexp not found: "probe:vfs_link"
  Regexp not found: "probe:vfs_write"
  -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due to missing debuginfo :: testcase skipped
  Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
  Regexp not found: "in this function|at this address"
  -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due to missing debuginfo :: testcase skipped
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with retval :: add
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with retval :: record
  -- [ PASS ] -- perf_probe :: test_adding_kernel :: function argument probing :: script
  ## [ PASS ] ## perf_probe :: test_adding_kernel SUMMARY
  -- [ SKIP ] -- perf_probe :: test_basic :: help message :: testcase skipped
  -- [ PASS ] -- perf_probe :: test_basic :: usage message
  -- [ PASS ] -- perf_probe :: test_basic :: quiet switch
  ## [ PASS ] ## perf_probe :: test_basic SUMMARY
  -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -a
  -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -d
  -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -L
  -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -V
  -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary argument for -F
  -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary argument for -l
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -d xxx
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -L foo
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -V foo
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -l
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -F
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -L foo
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -V foo
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -l
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -F
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -L foo -V bar
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -L foo -l
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -L foo -F
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -V foo -l
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -V foo -F
  -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -l -F
  ## [ PASS ] ## perf_probe :: test_invalid_options SUMMARY
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func:10
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func:0-10
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func:2+10
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func@source.c
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func@source.c:1
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: source.c:1
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: source.c:1+1
  -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: source.c:1-10
  -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func:foo
  -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func:1-foo
  -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func:1+foo
  -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func;lazy\*pattern
  ## [ PASS ] ## perf_probe :: test_line_semantics SUMMARY
  ---- end(0) ----
  189: perftool-testsuite_probe                                                          : Ok

Fixes: 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable line detected")
Cc: Jakub Brnak <jbrnak@redhat.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/tests/shell/lib/probe_vfs_getname.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
index 57a59ae7d4ae3d71..c091cd208beec056 100644
--- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
@@ -64,7 +64,7 @@ add_probe_vfs_getname() {
 }
 
 skip_if_no_debuginfo() {
-	add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information)" && return 2
+	add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information|Could not find probeable line)" && return 2
 	return 1
 }
 
-- 
2.56.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] perf test: Fix perf probe testsuite
  2026-11-05  7:17 [PATCH] perf test: Fix perf probe testsuite Namhyung Kim
@ 2026-11-05 15:08 ` James Clark
  2026-11-05 15:56   ` James Clark
  0 siblings, 1 reply; 3+ messages in thread
From: James Clark @ 2026-11-05 15:08 UTC (permalink / raw)
  To: Namhyung Kim, Arnaldo Carvalho de Melo, Ian Rogers
  Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users, Jakub Brnak, Michael Petlan



On 05/11/2026 07:17, Namhyung Kim wrote:
> The perf probe test suite fails on my machine.  It seems it's because
> the kernel debug info is not available.  Actually NO_DEBUGINFO is to
> check the condition and skip affected tests.
> 
> But it didn't work well as the skip_if_no_debuginfo function misses a
> new error string for v7.0+ kernels.  Internally it uses the
> add_probe_vfs_getname() to check if perf probe handles debuginfo and
> check the error string.  But it didn't add the new error string.
> 
>    "Could not find probeable line"
> 
> With that added, it now passes like below:
> 
>    $ sudo perf test -vv 189
>    Not taking turns using the perf mlock budget: nothing can exhaust it
>    189: perftool-testsuite_probe:
>    ---- start ----
>    test child forked, pid 26135
>    Probing warn_thunk_thunk
>    -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: adding blacklisted function warn_thunk_thunk
>    -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: listing blacklisted probe (should NOT be listed)
>    ## [ PASS ] ## perf_probe :: test_adding_blacklisted SUMMARY
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission ::
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission :: -a
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission :: --add
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf list
>    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due to missing debuginfo :: testcase skipped
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: using added probe
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: deleting added probe
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing removed probe (should NOT be listed)
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: dry run :: adding probe
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: first probe adding
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: second probe adding (without force)
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: second probe adding (with force)
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: using doubled probe
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: removing multiple probes
>    Regexp not found: "probe:vfs_mknod"
>    Regexp not found: "probe:vfs_create"
>    Regexp not found: "probe:vfs_rmdir"
>    Regexp not found: "probe:vfs_link"
>    Regexp not found: "probe:vfs_write"
>    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due to missing debuginfo :: testcase skipped
>    Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
>    Regexp not found: "in this function|at this address"
>    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due to missing debuginfo :: testcase skipped
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with retval :: add
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with retval :: record
>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function argument probing :: script
>    ## [ PASS ] ## perf_probe :: test_adding_kernel SUMMARY
>    -- [ SKIP ] -- perf_probe :: test_basic :: help message :: testcase skipped
>    -- [ PASS ] -- perf_probe :: test_basic :: usage message
>    -- [ PASS ] -- perf_probe :: test_basic :: quiet switch
>    ## [ PASS ] ## perf_probe :: test_basic SUMMARY
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -a
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -d
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -L
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing argument for -V
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary argument for -F
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary argument for -l
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -d xxx
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -L foo
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -V foo
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -l
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -a xxx -F
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -L foo
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -V foo
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -l
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -d xxx -F
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -L foo -V bar
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -L foo -l
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -L foo -F
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -V foo -l
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -V foo -F
>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually exclusive options :: -l -F
>    ## [ PASS ] ## perf_probe :: test_invalid_options SUMMARY
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func:10
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func:0-10
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func:2+10
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func@source.c
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: func@source.c:1
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: source.c:1
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: source.c:1+1
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable descriptions :: source.c:1-10
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func:foo
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func:1-foo
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func:1+foo
>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable descriptions :: func;lazy\*pattern
>    ## [ PASS ] ## perf_probe :: test_line_semantics SUMMARY
>    ---- end(0) ----
>    189: perftool-testsuite_probe                                                          : Ok
> 
> Fixes: 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable line detected")
> Cc: Jakub Brnak <jbrnak@redhat.com>
> Cc: Michael Petlan <mpetlan@redhat.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>   tools/perf/tests/shell/lib/probe_vfs_getname.sh | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> index 57a59ae7d4ae3d71..c091cd208beec056 100644
> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> @@ -64,7 +64,7 @@ add_probe_vfs_getname() {
>   }
>   
>   skip_if_no_debuginfo() {
> -	add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information)" && return 2
> +	add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information|Could not find probeable line)" && return 2
>   	return 1
>   }
>   

I was just about to send a fix for the same thing, but I had something 
slightly different. I think adding "Could not find probeable line" 
allows for false skips in the future even when debug symbols are 
present, like when that function was re-worked other times. And that 
seems to be what Sashiko mentions as well.

If you just try to do a dry run probe of getname_flags() which has 
always existed, then its a pretty stable equivalent for whether debug 
info exists or not:

   perf probe -n -v 'getname_flags $params' 2>&1 | grep -E -q "^(Failed 
to find the path for the kernel|Debuginfo-analysis is not 
supported)|(file has no debug information)" && return 2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] perf test: Fix perf probe testsuite
  2026-11-05 15:08 ` James Clark
@ 2026-11-05 15:56   ` James Clark
  0 siblings, 0 replies; 3+ messages in thread
From: James Clark @ 2026-11-05 15:56 UTC (permalink / raw)
  To: Namhyung Kim, Arnaldo Carvalho de Melo, Ian Rogers
  Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users, Jakub Brnak, Michael Petlan



On 05/11/2026 15:08, James Clark wrote:
> 
> 
> On 05/11/2026 07:17, Namhyung Kim wrote:
>> The perf probe test suite fails on my machine.  It seems it's because
>> the kernel debug info is not available.  Actually NO_DEBUGINFO is to
>> check the condition and skip affected tests.
>>
>> But it didn't work well as the skip_if_no_debuginfo function misses a
>> new error string for v7.0+ kernels.  Internally it uses the
>> add_probe_vfs_getname() to check if perf probe handles debuginfo and
>> check the error string.  But it didn't add the new error string.
>>
>>    "Could not find probeable line"
>>
>> With that added, it now passes like below:
>>
>>    $ sudo perf test -vv 189
>>    Not taking turns using the perf mlock budget: nothing can exhaust it
>>    189: perftool-testsuite_probe:
>>    ---- start ----
>>    test child forked, pid 26135
>>    Probing warn_thunk_thunk
>>    -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: adding 
>> blacklisted function warn_thunk_thunk
>>    -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: listing 
>> blacklisted probe (should NOT be listed)
>>    ## [ PASS ] ## perf_probe :: test_adding_blacklisted SUMMARY
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe 
>> inode_permission ::
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe 
>> inode_permission :: -a
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe 
>> inode_permission :: --add
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing added 
>> probe :: perf list
>>    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due 
>> to missing debuginfo :: testcase skipped
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: using added probe
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: deleting added 
>> probe
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing removed 
>> probe (should NOT be listed)
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: dry run :: 
>> adding probe
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding 
>> probes :: first probe adding
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding 
>> probes :: second probe adding (without force)
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding 
>> probes :: second probe adding (with force)
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: using doubled probe
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: removing 
>> multiple probes
>>    Regexp not found: "probe:vfs_mknod"
>>    Regexp not found: "probe:vfs_create"
>>    Regexp not found: "probe:vfs_rmdir"
>>    Regexp not found: "probe:vfs_link"
>>    Regexp not found: "probe:vfs_write"
>>    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due 
>> to missing debuginfo :: testcase skipped
>>    Regexp not found: 
>> "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
>>    Regexp not found: "in this function|at this address"
>>    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped due 
>> to missing debuginfo :: testcase skipped
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with 
>> retval :: add
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with 
>> retval :: record
>>    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function 
>> argument probing :: script
>>    ## [ PASS ] ## perf_probe :: test_adding_kernel SUMMARY
>>    -- [ SKIP ] -- perf_probe :: test_basic :: help message :: testcase 
>> skipped
>>    -- [ PASS ] -- perf_probe :: test_basic :: usage message
>>    -- [ PASS ] -- perf_probe :: test_basic :: quiet switch
>>    ## [ PASS ] ## perf_probe :: test_basic SUMMARY
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing 
>> argument for -a
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing 
>> argument for -d
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing 
>> argument for -L
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing 
>> argument for -V
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary 
>> argument for -F
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary 
>> argument for -l
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -a xxx -d xxx
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -a xxx -L foo
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -a xxx -V foo
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -a xxx -l
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -a xxx -F
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -d xxx -L foo
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -d xxx -V foo
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -d xxx -l
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -d xxx -F
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -L foo -V bar
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -L foo -l
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -L foo -F
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -V foo -l
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -V foo -F
>>    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually 
>> exclusive options :: -l -F
>>    ## [ PASS ] ## perf_probe :: test_invalid_options SUMMARY
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: func
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: func:10
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: func:0-10
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: func:2+10
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: func@source.c
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: func@source.c:1
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: source.c:1
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: source.c:1+1
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable 
>> descriptions :: source.c:1-10
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable 
>> descriptions :: func:foo
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable 
>> descriptions :: func:1-foo
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable 
>> descriptions :: func:1+foo
>>    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable 
>> descriptions :: func;lazy\*pattern
>>    ## [ PASS ] ## perf_probe :: test_line_semantics SUMMARY
>>    ---- end(0) ----
>>    189: perftool- 
>> testsuite_probe                                                          : Ok
>>
>> Fixes: 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable 
>> line detected")
>> Cc: Jakub Brnak <jbrnak@redhat.com>
>> Cc: Michael Petlan <mpetlan@redhat.com>
>> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
>> ---
>>   tools/perf/tests/shell/lib/probe_vfs_getname.sh | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/ 
>> perf/tests/shell/lib/probe_vfs_getname.sh
>> index 57a59ae7d4ae3d71..c091cd208beec056 100644
>> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>> @@ -64,7 +64,7 @@ add_probe_vfs_getname() {
>>   }
>>   skip_if_no_debuginfo() {
>> -    add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find the 
>> path for the kernel|Debuginfo-analysis is not supported)|(file has no 
>> debug information)" && return 2
>> +    add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find the 
>> path for the kernel|Debuginfo-analysis is not supported)|(file has no 
>> debug information|Could not find probeable line)" && return 2
>>       return 1
>>   }
> 
> I was just about to send a fix for the same thing, but I had something 
> slightly different. I think adding "Could not find probeable line" 
> allows for false skips in the future even when debug symbols are 
> present, like when that function was re-worked other times. And that 
> seems to be what Sashiko mentions as well.
> 
> If you just try to do a dry run probe of getname_flags() which has 
> always existed, then its a pretty stable equivalent for whether debug 
> info exists or not:
> 
>    perf probe -n -v 'getname_flags $params' 2>&1 | grep -E -q "^(Failed 
> to find the path for the kernel|Debuginfo-analysis is not supported)| 
> (file has no debug information)" && return 2
> 

I included it here: 
https://lore.kernel.org/linux-perf-users/20261105-james-perf-test-fixes-v1-0-0b279bee5830@linaro.org/T/#t



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-11-05 15:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-05  7:17 [PATCH] perf test: Fix perf probe testsuite Namhyung Kim
2026-11-05 15:08 ` James Clark
2026-11-05 15:56   ` James Clark

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®