public inbox for linux-perf-users@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2] tools/perf/tests: Update test_adding_kernel.sh to handle proper debuginfo check
@ 2026-03-23 12:24 Athira Rajeev
  2026-03-26 23:13 ` Namhyung Kim
  0 siblings, 1 reply; 5+ messages in thread
From: Athira Rajeev @ 2026-03-23 12:24 UTC (permalink / raw)
  To: acme, jolsa, adrian.hunter, vmolnaro, mpetlan, tmricht, maddy,
	irogers, namhyung
  Cc: linux-perf-users, linuxppc-dev, atrajeev, hbathini, Tejas.Manhas1,
	Tanushree.Shah, Shivani.Nittor

Perf test perftool-testsuite_probe fails as below:

 Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
 -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
 -- [ 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"
 -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
 Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
 Regexp not found: "in this function|at this address"
 -- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
 ## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found

Further analysing, the failed testcase is for "test_adding_kernel".
If the kernel debuginfo is missing, perf probe fails as below:

perf probe -nf --max-probes=512 -a 'vfs_* $params'
Failed to find the path for the kernel: No such file or directory
  Error: Failed to add events.

skip_if_no_debuginfo has check to handle whether debuginfo is present
and the testcase checks for debuginfo since this :
commit 90d32e92011e ("tools/perf: Handle perftool-testsuite_probe
testcases fail when kernel debuginfo is not present")

Recently a change got added in "tests/shell/lib/probe_vfs_getname.sh"
via this another fix:
commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
line detected")
Since this commit, first add_probe_vfs_getname is used to prevent false
failures. And based on return code of add_probe_vfs_getname, skip_if_no_debuginfo
is used to skip testcase if debuginfo is present. And this modified other
testcases to call add_probe_vfs_getname first and invoke
skip_if_no_debuginfo based on return value.

The tests in test_adding_kernel.sh which depends on presence of
debuginfo are:
1. probe add for inode_permission
2. probe max-probes option using 'vfs_* $params'
3. non-existing variable probing

For these tests, probe check for specific line is not required.
So call skip_if_no_debuginfo with argument to say if line check is
needed. This is to convey to skip_if_no_debuginfo() function
that test only needs to check for debuginfo, and not specifically
line number. Update skip_if_no_debuginfo to use simple "perf probe"
check if test only needs to check for debuginfo. And for other
tests which rely on line number, use add_probe_vfs_getname()

With the change, verified that only three which required debuginfo only
is skipped and others ran successfully. Also tested with debuginfo
to make sure tests are not skipped.

Reported-by: Tejas Manhas <Tejas.Manhas1@ibm.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
---
Changelog:
- First version used "perf probe -v -L getname_flags" for debuginfo
  check. This will not catch fail string "Debuginfo-analysis is not
supported" which is used in cases when perf is built without dwarf.
 So use "perf probe -vn add inode_permission" to capture cases when
 tools built with NO_LIBDWARF=1. This will capture debuginfo missing as
well as tool built without dwarf case.

 .../tests/shell/base_probe/test_adding_kernel.sh  | 15 ++++++++++++++-
 tools/perf/tests/shell/lib/probe_vfs_getname.sh   | 13 ++++++++++++-
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
index 555a825d55f2..f3db125c8669 100755
--- a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
+++ b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
@@ -23,10 +23,23 @@ TEST_RESULT=0
 . "$DIR_PATH/../lib/probe_vfs_getname.sh"
 
 TEST_PROBE=${TEST_PROBE:-"inode_permission"}
+PROBE_NO_LINE_CHECK=1
 
 # set NO_DEBUGINFO to skip testcase if debuginfo is not present
 # skip_if_no_debuginfo returns 2 if debuginfo is not present
-skip_if_no_debuginfo
+#
+# The perf probe checks which depends on presence of debuginfo and
+# used in this testcase are:
+# 1. probe add for inode_permission
+# 2. probe max-probes option using 'vfs_* $params'
+# 3. non-existing variable probing
+#
+# For these tests, probe check for specific line is not
+# required ( add_probe_vfs_getname does that ). So call
+# skip_if_no_debuginfo with argument as 1. This is to convey
+# that test only needs to check for debuginfo, and not specifically
+# line number
+skip_if_no_debuginfo $PROBE_NO_LINE_CHECK
 if [ $? -eq 2 ]; then
 	NO_DEBUGINFO=1
 fi
diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
index 88cd0e26d5f6..8ae2ea2bc8a2 100644
--- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
@@ -39,7 +39,18 @@ 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
+	no_line_check=$1
+	debug_str="^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information)"
+
+	# search for debug_str using simple perf probe if the
+	# test only needs to check for debuginfo, and not specifically
+	# line number.
+	if [ $no_line_check -eq 1 ]; then
+		perf probe -vn add inode_permission 2>&1 | grep -E -q "$debug_str" && return 2
+	else
+		add_probe_vfs_getname -v 2>&1 | grep -E -q "$debug_str" && return 2
+	fi
+
 	return 1
 }
 
-- 
2.47.3


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

* Re: [PATCH V2] tools/perf/tests: Update test_adding_kernel.sh to handle proper debuginfo check
  2026-03-23 12:24 [PATCH V2] tools/perf/tests: Update test_adding_kernel.sh to handle proper debuginfo check Athira Rajeev
@ 2026-03-26 23:13 ` Namhyung Kim
  2026-03-27 17:56   ` Athira Rajeev
  0 siblings, 1 reply; 5+ messages in thread
From: Namhyung Kim @ 2026-03-26 23:13 UTC (permalink / raw)
  To: Athira Rajeev
  Cc: acme, jolsa, adrian.hunter, vmolnaro, mpetlan, tmricht, maddy,
	irogers, linux-perf-users, linuxppc-dev, hbathini, Tejas.Manhas1,
	Tanushree.Shah, Shivani.Nittor

On Mon, Mar 23, 2026 at 05:54:24PM +0530, Athira Rajeev wrote:
> Perf test perftool-testsuite_probe fails as below:
> 
>  Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
>  -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
>  -- [ 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"
>  -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
>  Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
>  Regexp not found: "in this function|at this address"
>  -- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
>  ## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found
> 
> Further analysing, the failed testcase is for "test_adding_kernel".
> If the kernel debuginfo is missing, perf probe fails as below:
> 
> perf probe -nf --max-probes=512 -a 'vfs_* $params'
> Failed to find the path for the kernel: No such file or directory
>   Error: Failed to add events.
> 
> skip_if_no_debuginfo has check to handle whether debuginfo is present
> and the testcase checks for debuginfo since this :
> commit 90d32e92011e ("tools/perf: Handle perftool-testsuite_probe
> testcases fail when kernel debuginfo is not present")
> 
> Recently a change got added in "tests/shell/lib/probe_vfs_getname.sh"
> via this another fix:
> commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
> line detected")
> Since this commit, first add_probe_vfs_getname is used to prevent false
> failures. And based on return code of add_probe_vfs_getname, skip_if_no_debuginfo
> is used to skip testcase if debuginfo is present. And this modified other
> testcases to call add_probe_vfs_getname first and invoke
> skip_if_no_debuginfo based on return value.
> 
> The tests in test_adding_kernel.sh which depends on presence of
> debuginfo are:
> 1. probe add for inode_permission
> 2. probe max-probes option using 'vfs_* $params'
> 3. non-existing variable probing
> 
> For these tests, probe check for specific line is not required.
> So call skip_if_no_debuginfo with argument to say if line check is
> needed. This is to convey to skip_if_no_debuginfo() function
> that test only needs to check for debuginfo, and not specifically
> line number. Update skip_if_no_debuginfo to use simple "perf probe"
> check if test only needs to check for debuginfo. And for other
> tests which rely on line number, use add_probe_vfs_getname()
> 
> With the change, verified that only three which required debuginfo only
> is skipped and others ran successfully. Also tested with debuginfo
> to make sure tests are not skipped.
> 
> Reported-by: Tejas Manhas <Tejas.Manhas1@ibm.com>
> Reviewed-by: Ian Rogers <irogers@google.com>
> Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
> ---
> Changelog:
> - First version used "perf probe -v -L getname_flags" for debuginfo
>   check. This will not catch fail string "Debuginfo-analysis is not
> supported" which is used in cases when perf is built without dwarf.
>  So use "perf probe -vn add inode_permission" to capture cases when
>  tools built with NO_LIBDWARF=1. This will capture debuginfo missing as
> well as tool built without dwarf case.
> 
>  .../tests/shell/base_probe/test_adding_kernel.sh  | 15 ++++++++++++++-
>  tools/perf/tests/shell/lib/probe_vfs_getname.sh   | 13 ++++++++++++-
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
> index 555a825d55f2..f3db125c8669 100755
> --- a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
> +++ b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
> @@ -23,10 +23,23 @@ TEST_RESULT=0
>  . "$DIR_PATH/../lib/probe_vfs_getname.sh"
>  
>  TEST_PROBE=${TEST_PROBE:-"inode_permission"}
> +PROBE_NO_LINE_CHECK=1

I'm not sure I follow but shouldn't it depend on the return value of
`perf check feature -q dwarf`?

Thanks,
Namhyung

>  
>  # set NO_DEBUGINFO to skip testcase if debuginfo is not present
>  # skip_if_no_debuginfo returns 2 if debuginfo is not present
> -skip_if_no_debuginfo
> +#
> +# The perf probe checks which depends on presence of debuginfo and
> +# used in this testcase are:
> +# 1. probe add for inode_permission
> +# 2. probe max-probes option using 'vfs_* $params'
> +# 3. non-existing variable probing
> +#
> +# For these tests, probe check for specific line is not
> +# required ( add_probe_vfs_getname does that ). So call
> +# skip_if_no_debuginfo with argument as 1. This is to convey
> +# that test only needs to check for debuginfo, and not specifically
> +# line number
> +skip_if_no_debuginfo $PROBE_NO_LINE_CHECK
>  if [ $? -eq 2 ]; then
>  	NO_DEBUGINFO=1
>  fi
> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> index 88cd0e26d5f6..8ae2ea2bc8a2 100644
> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> @@ -39,7 +39,18 @@ 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
> +	no_line_check=$1
> +	debug_str="^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information)"
> +
> +	# search for debug_str using simple perf probe if the
> +	# test only needs to check for debuginfo, and not specifically
> +	# line number.
> +	if [ $no_line_check -eq 1 ]; then
> +		perf probe -vn add inode_permission 2>&1 | grep -E -q "$debug_str" && return 2
> +	else
> +		add_probe_vfs_getname -v 2>&1 | grep -E -q "$debug_str" && return 2
> +	fi
> +
>  	return 1
>  }
>  
> -- 
> 2.47.3
> 

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

* Re: [PATCH V2] tools/perf/tests: Update test_adding_kernel.sh to handle proper debuginfo check
  2026-03-26 23:13 ` Namhyung Kim
@ 2026-03-27 17:56   ` Athira Rajeev
  2026-03-31  6:56     ` Namhyung Kim
  0 siblings, 1 reply; 5+ messages in thread
From: Athira Rajeev @ 2026-03-27 17:56 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: acme, jolsa, adrian.hunter, vmolnaro, mpetlan, tmricht, maddy,
	irogers, linux-perf-users, linuxppc-dev, hbathini, Tejas.Manhas1,
	Tanushree.Shah, Shivani.Nittor



> On 27 Mar 2026, at 4:43 AM, Namhyung Kim <namhyung@kernel.org> wrote:
> 
> On Mon, Mar 23, 2026 at 05:54:24PM +0530, Athira Rajeev wrote:
>> Perf test perftool-testsuite_probe fails as below:
>> 
>> Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
>> -- [ 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"
>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
>> Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
>> Regexp not found: "in this function|at this address"
>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
>> ## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found
>> 
>> Further analysing, the failed testcase is for "test_adding_kernel".
>> If the kernel debuginfo is missing, perf probe fails as below:
>> 
>> perf probe -nf --max-probes=512 -a 'vfs_* $params'
>> Failed to find the path for the kernel: No such file or directory
>>  Error: Failed to add events.
>> 
>> skip_if_no_debuginfo has check to handle whether debuginfo is present
>> and the testcase checks for debuginfo since this :
>> commit 90d32e92011e ("tools/perf: Handle perftool-testsuite_probe
>> testcases fail when kernel debuginfo is not present")
>> 
>> Recently a change got added in "tests/shell/lib/probe_vfs_getname.sh"
>> via this another fix:
>> commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
>> line detected")
>> Since this commit, first add_probe_vfs_getname is used to prevent false
>> failures. And based on return code of add_probe_vfs_getname, skip_if_no_debuginfo
>> is used to skip testcase if debuginfo is present. And this modified other
>> testcases to call add_probe_vfs_getname first and invoke
>> skip_if_no_debuginfo based on return value.
>> 
>> The tests in test_adding_kernel.sh which depends on presence of
>> debuginfo are:
>> 1. probe add for inode_permission
>> 2. probe max-probes option using 'vfs_* $params'
>> 3. non-existing variable probing
>> 
>> For these tests, probe check for specific line is not required.
>> So call skip_if_no_debuginfo with argument to say if line check is
>> needed. This is to convey to skip_if_no_debuginfo() function
>> that test only needs to check for debuginfo, and not specifically
>> line number. Update skip_if_no_debuginfo to use simple "perf probe"
>> check if test only needs to check for debuginfo. And for other
>> tests which rely on line number, use add_probe_vfs_getname()
>> 
>> With the change, verified that only three which required debuginfo only
>> is skipped and others ran successfully. Also tested with debuginfo
>> to make sure tests are not skipped.
>> 
>> Reported-by: Tejas Manhas <Tejas.Manhas1@ibm.com>
>> Reviewed-by: Ian Rogers <irogers@google.com>
>> Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
>> ---
>> Changelog:
>> - First version used "perf probe -v -L getname_flags" for debuginfo
>>  check. This will not catch fail string "Debuginfo-analysis is not
>> supported" which is used in cases when perf is built without dwarf.
>> So use "perf probe -vn add inode_permission" to capture cases when
>> tools built with NO_LIBDWARF=1. This will capture debuginfo missing as
>> well as tool built without dwarf case.
>> 
>> .../tests/shell/base_probe/test_adding_kernel.sh  | 15 ++++++++++++++-
>> tools/perf/tests/shell/lib/probe_vfs_getname.sh   | 13 ++++++++++++-
>> 2 files changed, 26 insertions(+), 2 deletions(-)
>> 
>> diff --git a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
>> index 555a825d55f2..f3db125c8669 100755
>> --- a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
>> +++ b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
>> @@ -23,10 +23,23 @@ TEST_RESULT=0
>> . "$DIR_PATH/../lib/probe_vfs_getname.sh"
>> 
>> TEST_PROBE=${TEST_PROBE:-"inode_permission"}
>> +PROBE_NO_LINE_CHECK=1
> 
> I'm not sure I follow but shouldn't it depend on the return value of
> `perf check feature -q dwarf`?
> 
> Thanks,
> Namhyung

Hi Namhyung

Thanks for checking the patch.

Yes, "perf check feature -q dwarf” checks if perf is compiled with dwarf support.
But for “test_adding_kernel” , we need to check if kernel debuginfo is missing.
The check this path is trying to, also includes “debuginfo”

In environment without debuginfo: perftool-testsuite_probe fails as below:

Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
-- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
-- [ 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"
-- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
Regexp not found: "in this function|at this address"
-- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found

We have “skip_if_no_debuginfo” check in tools/perf/tests/shell/lib/probe_vfs_getname.sh and
“test_adding_kernel” calls this to find out presence of debuginfo. 

Recently a change got added via commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
line detected”) where we return if specific line is not found using perf probe. And hence debuginfo check is not
happening.


The tests in test_adding_kernel.sh which depends on presence of
debuginfo are:
1. probe add for inode_permission
2. probe max-probes option using 'vfs_* $params'
3. non-existing variable probing

For these tests, probe check for specific line is not required. So this patch updates
skip_if_no_debuginfo to use an argument that communicates whether line check is needed.
If only debuginfo/dwarf check is required, use simple "perf probe”. And for other
tests which rely on line number, fallback to default add_probe_vfs_getname().

Thanks
Athira

> 
>> 
>> # set NO_DEBUGINFO to skip testcase if debuginfo is not present
>> # skip_if_no_debuginfo returns 2 if debuginfo is not present
>> -skip_if_no_debuginfo
>> +#
>> +# The perf probe checks which depends on presence of debuginfo and
>> +# used in this testcase are:
>> +# 1. probe add for inode_permission
>> +# 2. probe max-probes option using 'vfs_* $params'
>> +# 3. non-existing variable probing
>> +#
>> +# For these tests, probe check for specific line is not
>> +# required ( add_probe_vfs_getname does that ). So call
>> +# skip_if_no_debuginfo with argument as 1. This is to convey
>> +# that test only needs to check for debuginfo, and not specifically
>> +# line number
>> +skip_if_no_debuginfo $PROBE_NO_LINE_CHECK
>> if [ $? -eq 2 ]; then
>> NO_DEBUGINFO=1
>> fi
>> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>> index 88cd0e26d5f6..8ae2ea2bc8a2 100644
>> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>> @@ -39,7 +39,18 @@ 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
>> + no_line_check=$1
>> + debug_str="^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information)"
>> +
>> + # search for debug_str using simple perf probe if the
>> + # test only needs to check for debuginfo, and not specifically
>> + # line number.
>> + if [ $no_line_check -eq 1 ]; then
>> + perf probe -vn add inode_permission 2>&1 | grep -E -q "$debug_str" && return 2
>> + else
>> + add_probe_vfs_getname -v 2>&1 | grep -E -q "$debug_str" && return 2
>> + fi
>> +
>> return 1
>> }
>> 
>> -- 
>> 2.47.3



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

* Re: [PATCH V2] tools/perf/tests: Update test_adding_kernel.sh to handle proper debuginfo check
  2026-03-27 17:56   ` Athira Rajeev
@ 2026-03-31  6:56     ` Namhyung Kim
  2026-03-31 10:12       ` Athira Rajeev
  0 siblings, 1 reply; 5+ messages in thread
From: Namhyung Kim @ 2026-03-31  6:56 UTC (permalink / raw)
  To: Athira Rajeev
  Cc: acme, jolsa, adrian.hunter, vmolnaro, mpetlan, tmricht, maddy,
	irogers, linux-perf-users, linuxppc-dev, hbathini, Tejas.Manhas1,
	Tanushree.Shah, Shivani.Nittor

On Fri, Mar 27, 2026 at 11:26:48PM +0530, Athira Rajeev wrote:
> 
> 
> > On 27 Mar 2026, at 4:43 AM, Namhyung Kim <namhyung@kernel.org> wrote:
> > 
> > On Mon, Mar 23, 2026 at 05:54:24PM +0530, Athira Rajeev wrote:
> >> Perf test perftool-testsuite_probe fails as below:
> >> 
> >> Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
> >> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
> >> -- [ 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"
> >> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
> >> Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
> >> Regexp not found: "in this function|at this address"
> >> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
> >> ## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found
> >> 
> >> Further analysing, the failed testcase is for "test_adding_kernel".
> >> If the kernel debuginfo is missing, perf probe fails as below:
> >> 
> >> perf probe -nf --max-probes=512 -a 'vfs_* $params'
> >> Failed to find the path for the kernel: No such file or directory
> >>  Error: Failed to add events.
> >> 
> >> skip_if_no_debuginfo has check to handle whether debuginfo is present
> >> and the testcase checks for debuginfo since this :
> >> commit 90d32e92011e ("tools/perf: Handle perftool-testsuite_probe
> >> testcases fail when kernel debuginfo is not present")
> >> 
> >> Recently a change got added in "tests/shell/lib/probe_vfs_getname.sh"
> >> via this another fix:
> >> commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
> >> line detected")
> >> Since this commit, first add_probe_vfs_getname is used to prevent false
> >> failures. And based on return code of add_probe_vfs_getname, skip_if_no_debuginfo
> >> is used to skip testcase if debuginfo is present. And this modified other
> >> testcases to call add_probe_vfs_getname first and invoke
> >> skip_if_no_debuginfo based on return value.
> >> 
> >> The tests in test_adding_kernel.sh which depends on presence of
> >> debuginfo are:
> >> 1. probe add for inode_permission
> >> 2. probe max-probes option using 'vfs_* $params'
> >> 3. non-existing variable probing
> >> 
> >> For these tests, probe check for specific line is not required.
> >> So call skip_if_no_debuginfo with argument to say if line check is
> >> needed. This is to convey to skip_if_no_debuginfo() function
> >> that test only needs to check for debuginfo, and not specifically
> >> line number. Update skip_if_no_debuginfo to use simple "perf probe"
> >> check if test only needs to check for debuginfo. And for other
> >> tests which rely on line number, use add_probe_vfs_getname()
> >> 
> >> With the change, verified that only three which required debuginfo only
> >> is skipped and others ran successfully. Also tested with debuginfo
> >> to make sure tests are not skipped.
> >> 
> >> Reported-by: Tejas Manhas <Tejas.Manhas1@ibm.com>
> >> Reviewed-by: Ian Rogers <irogers@google.com>
> >> Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
> >> ---
> >> Changelog:
> >> - First version used "perf probe -v -L getname_flags" for debuginfo
> >>  check. This will not catch fail string "Debuginfo-analysis is not
> >> supported" which is used in cases when perf is built without dwarf.
> >> So use "perf probe -vn add inode_permission" to capture cases when
> >> tools built with NO_LIBDWARF=1. This will capture debuginfo missing as
> >> well as tool built without dwarf case.
> >> 
> >> .../tests/shell/base_probe/test_adding_kernel.sh  | 15 ++++++++++++++-
> >> tools/perf/tests/shell/lib/probe_vfs_getname.sh   | 13 ++++++++++++-
> >> 2 files changed, 26 insertions(+), 2 deletions(-)
> >> 
> >> diff --git a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
> >> index 555a825d55f2..f3db125c8669 100755
> >> --- a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
> >> +++ b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
> >> @@ -23,10 +23,23 @@ TEST_RESULT=0
> >> . "$DIR_PATH/../lib/probe_vfs_getname.sh"
> >> 
> >> TEST_PROBE=${TEST_PROBE:-"inode_permission"}
> >> +PROBE_NO_LINE_CHECK=1
> > 
> > I'm not sure I follow but shouldn't it depend on the return value of
> > `perf check feature -q dwarf`?
> > 
> > Thanks,
> > Namhyung
> 
> Hi Namhyung
> 
> Thanks for checking the patch.
> 
> Yes, "perf check feature -q dwarf” checks if perf is compiled with dwarf support.
> But for “test_adding_kernel” , we need to check if kernel debuginfo is missing.
> The check this path is trying to, also includes “debuginfo”
> 
> In environment without debuginfo: perftool-testsuite_probe fails as below:
> 
> Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
> -- [ 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"
> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
> Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
> Regexp not found: "in this function|at this address"
> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
> ## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found
> 
> We have “skip_if_no_debuginfo” check in tools/perf/tests/shell/lib/probe_vfs_getname.sh and
> “test_adding_kernel” calls this to find out presence of debuginfo. 
> 
> Recently a change got added via commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
> line detected”) where we return if specific line is not found using perf probe. And hence debuginfo check is not
> happening.
> 
> 
> The tests in test_adding_kernel.sh which depends on presence of
> debuginfo are:
> 1. probe add for inode_permission
> 2. probe max-probes option using 'vfs_* $params'
> 3. non-existing variable probing
> 
> For these tests, probe check for specific line is not required. So this patch updates
> skip_if_no_debuginfo to use an argument that communicates whether line check is needed.
> If only debuginfo/dwarf check is required, use simple "perf probe”. And for other
> tests which rely on line number, fallback to default add_probe_vfs_getname().
 
Ok, thanks for the explanation.  But I'm afraid you didn't change other
callsites to pass 0 explicitly.

> > 
> >> 
> >> # set NO_DEBUGINFO to skip testcase if debuginfo is not present
> >> # skip_if_no_debuginfo returns 2 if debuginfo is not present
> >> -skip_if_no_debuginfo
> >> +#
> >> +# The perf probe checks which depends on presence of debuginfo and
> >> +# used in this testcase are:
> >> +# 1. probe add for inode_permission
> >> +# 2. probe max-probes option using 'vfs_* $params'
> >> +# 3. non-existing variable probing
> >> +#
> >> +# For these tests, probe check for specific line is not
> >> +# required ( add_probe_vfs_getname does that ). So call
> >> +# skip_if_no_debuginfo with argument as 1. This is to convey
> >> +# that test only needs to check for debuginfo, and not specifically
> >> +# line number
> >> +skip_if_no_debuginfo $PROBE_NO_LINE_CHECK
> >> if [ $? -eq 2 ]; then
> >> NO_DEBUGINFO=1
> >> fi
> >> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> >> index 88cd0e26d5f6..8ae2ea2bc8a2 100644
> >> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> >> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> >> @@ -39,7 +39,18 @@ 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
> >> + no_line_check=$1
> >> + debug_str="^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information)"
> >> +
> >> + # search for debug_str using simple perf probe if the
> >> + # test only needs to check for debuginfo, and not specifically
> >> + # line number.
> >> + if [ $no_line_check -eq 1 ]; then
> >> + perf probe -vn add inode_permission 2>&1 | grep -E -q "$debug_str" && return 2

Sashiko found that it should be '--add' or '-a'.

Thanks,
Namhyung


> >> + else
> >> + add_probe_vfs_getname -v 2>&1 | grep -E -q "$debug_str" && return 2
> >> + fi
> >> +
> >> return 1
> >> }
> >> 
> >> -- 
> >> 2.47.3
> 
> 

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

* Re: [PATCH V2] tools/perf/tests: Update test_adding_kernel.sh to handle proper debuginfo check
  2026-03-31  6:56     ` Namhyung Kim
@ 2026-03-31 10:12       ` Athira Rajeev
  0 siblings, 0 replies; 5+ messages in thread
From: Athira Rajeev @ 2026-03-31 10:12 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: acme, jolsa, adrian.hunter, vmolnaro, mpetlan, tmricht, maddy,
	irogers, linux-perf-users, linuxppc-dev, hbathini, Tejas.Manhas1,
	Tanushree.Shah, Shivani.Nittor



> On 31 Mar 2026, at 12:26 PM, Namhyung Kim <namhyung@kernel.org> wrote:
> 
> On Fri, Mar 27, 2026 at 11:26:48PM +0530, Athira Rajeev wrote:
>> 
>> 
>>> On 27 Mar 2026, at 4:43 AM, Namhyung Kim <namhyung@kernel.org> wrote:
>>> 
>>> On Mon, Mar 23, 2026 at 05:54:24PM +0530, Athira Rajeev wrote:
>>>> Perf test perftool-testsuite_probe fails as below:
>>>> 
>>>> Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
>>>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
>>>> -- [ 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"
>>>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
>>>> Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
>>>> Regexp not found: "in this function|at this address"
>>>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
>>>> ## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found
>>>> 
>>>> Further analysing, the failed testcase is for "test_adding_kernel".
>>>> If the kernel debuginfo is missing, perf probe fails as below:
>>>> 
>>>> perf probe -nf --max-probes=512 -a 'vfs_* $params'
>>>> Failed to find the path for the kernel: No such file or directory
>>>> Error: Failed to add events.
>>>> 
>>>> skip_if_no_debuginfo has check to handle whether debuginfo is present
>>>> and the testcase checks for debuginfo since this :
>>>> commit 90d32e92011e ("tools/perf: Handle perftool-testsuite_probe
>>>> testcases fail when kernel debuginfo is not present")
>>>> 
>>>> Recently a change got added in "tests/shell/lib/probe_vfs_getname.sh"
>>>> via this another fix:
>>>> commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
>>>> line detected")
>>>> Since this commit, first add_probe_vfs_getname is used to prevent false
>>>> failures. And based on return code of add_probe_vfs_getname, skip_if_no_debuginfo
>>>> is used to skip testcase if debuginfo is present. And this modified other
>>>> testcases to call add_probe_vfs_getname first and invoke
>>>> skip_if_no_debuginfo based on return value.
>>>> 
>>>> The tests in test_adding_kernel.sh which depends on presence of
>>>> debuginfo are:
>>>> 1. probe add for inode_permission
>>>> 2. probe max-probes option using 'vfs_* $params'
>>>> 3. non-existing variable probing
>>>> 
>>>> For these tests, probe check for specific line is not required.
>>>> So call skip_if_no_debuginfo with argument to say if line check is
>>>> needed. This is to convey to skip_if_no_debuginfo() function
>>>> that test only needs to check for debuginfo, and not specifically
>>>> line number. Update skip_if_no_debuginfo to use simple "perf probe"
>>>> check if test only needs to check for debuginfo. And for other
>>>> tests which rely on line number, use add_probe_vfs_getname()
>>>> 
>>>> With the change, verified that only three which required debuginfo only
>>>> is skipped and others ran successfully. Also tested with debuginfo
>>>> to make sure tests are not skipped.
>>>> 
>>>> Reported-by: Tejas Manhas <Tejas.Manhas1@ibm.com>
>>>> Reviewed-by: Ian Rogers <irogers@google.com>
>>>> Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
>>>> ---
>>>> Changelog:
>>>> - First version used "perf probe -v -L getname_flags" for debuginfo
>>>> check. This will not catch fail string "Debuginfo-analysis is not
>>>> supported" which is used in cases when perf is built without dwarf.
>>>> So use "perf probe -vn add inode_permission" to capture cases when
>>>> tools built with NO_LIBDWARF=1. This will capture debuginfo missing as
>>>> well as tool built without dwarf case.
>>>> 
>>>> .../tests/shell/base_probe/test_adding_kernel.sh  | 15 ++++++++++++++-
>>>> tools/perf/tests/shell/lib/probe_vfs_getname.sh   | 13 ++++++++++++-
>>>> 2 files changed, 26 insertions(+), 2 deletions(-)
>>>> 
>>>> diff --git a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
>>>> index 555a825d55f2..f3db125c8669 100755
>>>> --- a/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
>>>> +++ b/tools/perf/tests/shell/base_probe/test_adding_kernel.sh
>>>> @@ -23,10 +23,23 @@ TEST_RESULT=0
>>>> . "$DIR_PATH/../lib/probe_vfs_getname.sh"
>>>> 
>>>> TEST_PROBE=${TEST_PROBE:-"inode_permission"}
>>>> +PROBE_NO_LINE_CHECK=1
>>> 
>>> I'm not sure I follow but shouldn't it depend on the return value of
>>> `perf check feature -q dwarf`?
>>> 
>>> Thanks,
>>> Namhyung
>> 
>> Hi Namhyung
>> 
>> Thanks for checking the patch.
>> 
>> Yes, "perf check feature -q dwarf” checks if perf is compiled with dwarf support.
>> But for “test_adding_kernel” , we need to check if kernel debuginfo is missing.
>> The check this path is trying to, also includes “debuginfo”
>> 
>> In environment without debuginfo: perftool-testsuite_probe fails as below:
>> 
>> Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
>> -- [ 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"
>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
>> Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
>> Regexp not found: "in this function|at this address"
>> -- [ FAIL ] -- perf_probe :: test_adding_kernel :: non-existing variable (output regexp parsing)
>> ## [ FAIL ] ## perf_probe :: test_adding_kernel SUMMARY :: 3 failures found
>> 
>> We have “skip_if_no_debuginfo” check in tools/perf/tests/shell/lib/probe_vfs_getname.sh and
>> “test_adding_kernel” calls this to find out presence of debuginfo. 
>> 
>> Recently a change got added via commit 92b664dcefab ("perf test probe_vfs_getname: Skip if no suitable
>> line detected”) where we return if specific line is not found using perf probe. And hence debuginfo check is not
>> happening.
>> 
>> 
>> The tests in test_adding_kernel.sh which depends on presence of
>> debuginfo are:
>> 1. probe add for inode_permission
>> 2. probe max-probes option using 'vfs_* $params'
>> 3. non-existing variable probing
>> 
>> For these tests, probe check for specific line is not required. So this patch updates
>> skip_if_no_debuginfo to use an argument that communicates whether line check is needed.
>> If only debuginfo/dwarf check is required, use simple "perf probe”. And for other
>> tests which rely on line number, fallback to default add_probe_vfs_getname().
> 
> Ok, thanks for the explanation.  But I'm afraid you didn't change other
> callsites to pass 0 explicitly.

Thanks Namhyung for responding. I will add those changes in V3

Thanks
Athira
> 
>>> 
>>>> 
>>>> # set NO_DEBUGINFO to skip testcase if debuginfo is not present
>>>> # skip_if_no_debuginfo returns 2 if debuginfo is not present
>>>> -skip_if_no_debuginfo
>>>> +#
>>>> +# The perf probe checks which depends on presence of debuginfo and
>>>> +# used in this testcase are:
>>>> +# 1. probe add for inode_permission
>>>> +# 2. probe max-probes option using 'vfs_* $params'
>>>> +# 3. non-existing variable probing
>>>> +#
>>>> +# For these tests, probe check for specific line is not
>>>> +# required ( add_probe_vfs_getname does that ). So call
>>>> +# skip_if_no_debuginfo with argument as 1. This is to convey
>>>> +# that test only needs to check for debuginfo, and not specifically
>>>> +# line number
>>>> +skip_if_no_debuginfo $PROBE_NO_LINE_CHECK
>>>> if [ $? -eq 2 ]; then
>>>> NO_DEBUGINFO=1
>>>> fi
>>>> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>>>> index 88cd0e26d5f6..8ae2ea2bc8a2 100644
>>>> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>>>> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
>>>> @@ -39,7 +39,18 @@ 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
>>>> + no_line_check=$1
>>>> + debug_str="^(Failed to find the path for the kernel|Debuginfo-analysis is not supported)|(file has no debug information)"
>>>> +
>>>> + # search for debug_str using simple perf probe if the
>>>> + # test only needs to check for debuginfo, and not specifically
>>>> + # line number.
>>>> + if [ $no_line_check -eq 1 ]; then
>>>> + perf probe -vn add inode_permission 2>&1 | grep -E -q "$debug_str" && return 2
> 
> Sashiko found that it should be '--add' or '-a'.
> 
> Thanks,
> Namhyung
> 
> 
>>>> + else
>>>> + add_probe_vfs_getname -v 2>&1 | grep -E -q "$debug_str" && return 2
>>>> + fi
>>>> +
>>>> return 1
>>>> }
>>>> 
>>>> -- 
>>>> 2.47.3



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

end of thread, other threads:[~2026-03-31 10:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-23 12:24 [PATCH V2] tools/perf/tests: Update test_adding_kernel.sh to handle proper debuginfo check Athira Rajeev
2026-03-26 23:13 ` Namhyung Kim
2026-03-27 17:56   ` Athira Rajeev
2026-03-31  6:56     ` Namhyung Kim
2026-03-31 10:12       ` Athira Rajeev

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