All of lore.kernel.org
 help / color / mirror / Atom feed
From: Likhitha Korrapati <likhitha@linux.ibm.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: jolsa@kernel.org, adrian.hunter@intel.com, irogers@google.com,
	james.clark@arm.com, namhyung@kernel.org,
	linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	maddy@linux.ibm.com, atrajeev@linux.vnet.ibm.com,
	kjain@linux.ibm.com, disgoel@linux.vnet.ibm.com,
	Disha Goel <disgoel@linux.ibm.com>
Subject: Re: [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
Date: Thu, 30 Nov 2023 16:16:20 +0530	[thread overview]
Message-ID: <6f6d99fd-9f97-d56a-ef56-3b822ae26f1e@linux.ibm.com> (raw)
In-Reply-To: <ZWeljhj9ZH4xrqjw@kernel.org>

Hi Arnaldo,

Thank you for pointing it. From next time I will take care of it.

-Likhitha.

On 30/11/23 02:26, Arnaldo Carvalho de Melo wrote:
> Em Sun, Nov 26, 2023 at 02:09:14AM -0500, Likhitha Korrapati escreveu:
>> The perf test "probe libc's inet_pton & backtrace it with ping" fails on
>> powerpc as below:
>>
>> root@xxx perf]# perf test -v "probe libc's inet_pton & backtrace it with
>> ping"
>>   85: probe libc's inet_pton & backtrace it with ping                 :
>> --- start ---
>> test child forked, pid 96028
>> ping 96056 [002] 127271.101961: probe_libc:inet_pton: (7fffa1779a60)
>> 7fffa1779a60 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> 7fffa172a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> FAIL: expected backtrace entry
>> "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\(/usr/lib64/glibc-hwcaps/power10/libc.so.6\)$"
>> got "7fffa172a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)"
>> test child finished with -1
>> ---- end ----
> Try to have quoted output, the ones separated by ---- at the beginning
> of the line indented two spaces, so as to avoid:
>
> perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
>
> The perf test "probe libc's inet_pton & backtrace it with ping" fails on
> powerpc as below:
>
> root@xxx perf]# perf test -v "probe libc's inet_pton & backtrace it with
> ping"
>   85: probe libc's inet_pton & backtrace it with ping                 :
>
> # Please enter the commit message for your changes. Lines starting
> # with '#' will be ignored, and an empty message aborts the commit.
> #
> # Author:    Likhitha Korrapati <likhitha@linux.ibm.com>
> # Date:      Sun Nov 26 02:09:14 2023 -0500
>
>
> I'm copy and pasting from the original post, thanks!
>
> - Arnaldo
>
>> probe libc's inet_pton & backtrace it with ping: FAILED!
>>
>> This test installs a probe on libc's inet_pton function, which will use
>> uprobes and then uses perf trace on a ping to localhost. It gets 3
>> levels deep backtrace and checks whether it is what we expected or not.
>>
>> The test started failing from RHEL 9.4 where as it works in previous
>> distro version (RHEL 9.2). Test expects gaih_inet function to be part of
>> backtrace. But in the glibc version (2.34-86) which is part of distro
>> where it fails, this function is missing and hence the test is failing.
>>
>>  From nm and ping command output we can confirm that gaih_inet function
>> is not present in the expected backtrace for glibc version glibc-2.34-86
>>
>> [root@xxx perf]# nm /usr/lib64/glibc-hwcaps/power10/libc.so.6 | grep gaih_inet
>> 00000000001273e0 t gaih_inet_serv
>> 00000000001cd8d8 r gaih_inet_typeproto
>>
>> [root@xxx perf]# perf script -i /tmp/perf.data.6E8
>> ping  104048 [000] 128582.508976: probe_libc:inet_pton: (7fff83779a60)
>>              7fff83779a60 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>              7fff8372a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>                 11dc73534 [unknown] (/usr/bin/ping)
>>              7fff8362a8c4 __libc_start_call_main+0x84
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>
>> FAIL: expected backtrace entry
>> "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\(/usr/lib64/glibc-hwcaps/power10/libc.so.6\)$"
>> got "7fff9d52a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)"
>>
>> With version glibc-2.34-60 gaih_inet function is present as part of the
>> expected backtrace. So we cannot just remove the gaih_inet function from
>> the backtrace.
>>
>> [root@xxx perf]# nm /usr/lib64/glibc-hwcaps/power10/libc.so.6 | grep gaih_inet
>> 0000000000130490 t gaih_inet.constprop.0
>> 000000000012e830 t gaih_inet_serv
>> 00000000001d45e4 r gaih_inet_typeproto
>>
>> [root@xxx perf]# ./perf script -i /tmp/perf.data.b6S
>> ping   67906 [000] 22699.591699: probe_libc:inet_pton_3: (7fffbdd80820)
>>              7fffbdd80820 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>              7fffbdd31160 gaih_inet.constprop.0+0xcd0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>              7fffbdd31c7c getaddrinfo+0x14c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>                 1140d3558 [unknown] (/usr/bin/ping)
>>
>> This patch solves this issue by doing a conditional skip. If there is a
>> gaih_inet function present in the libc then it will be added to the
>> expected backtrace else the function will be skipped from being added
>> to the expected backtrace.
>>
>> Output with the patch
>>
>> [root@xxx perf]# ./perf test -v "probe libc's inet_pton & backtrace it
>> with ping"
>>   83: probe libc's inet_pton & backtrace it with ping                 :
>> --- start ---
>> test child forked, pid 102662
>> ping 102692 [000] 127935.549973: probe_libc:inet_pton: (7fff93379a60)
>> 7fff93379a60 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> 7fff9332a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> 11ef03534 [unknown] (/usr/bin/ping)
>> test child finished with 0
>> ---- end ----
>> probe libc's inet_pton & backtrace it with ping: Ok
>>
>> Signed-off-by: Likhitha Korrapati <likhitha@linux.ibm.com>
>> Reported-by: Disha Goel <disgoel@linux.ibm.com>
>> ---
>>   tools/perf/tests/shell/record+probe_libc_inet_pton.sh | 5 ++++-
>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> index eebeea6bdc76..72c65570db37 100755
>> --- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> +++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> @@ -45,7 +45,10 @@ trace_libc_inet_pton_backtrace() {
>>   		;;
>>   	ppc64|ppc64le)
>>   		eventattr='max-stack=4'
>> -		echo "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
>> +		# Add gaih_inet to expected backtrace only if it is part of libc.
>> +		if nm $libc | grep -F -q gaih_inet.; then
>> +			echo "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
>> +		fi
>>   		echo "getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
>>   		echo ".*(\+0x[[:xdigit:]]+|\[unknown\])[[:space:]]\(.*/bin/ping.*\)$" >> $expected
>>   		;;
>> -- 
>> 2.39.1
>>

WARNING: multiple messages have this Message-ID (diff)
From: Likhitha Korrapati <likhitha@linux.ibm.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: irogers@google.com, maddy@linux.ibm.com,
	Disha Goel <disgoel@linux.ibm.com>,
	kjain@linux.ibm.com, adrian.hunter@intel.com,
	linux-perf-users@vger.kernel.org, atrajeev@linux.vnet.ibm.com,
	james.clark@arm.com, jolsa@kernel.org, namhyung@kernel.org,
	disgoel@linux.vnet.ibm.com, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
Date: Thu, 30 Nov 2023 16:16:20 +0530	[thread overview]
Message-ID: <6f6d99fd-9f97-d56a-ef56-3b822ae26f1e@linux.ibm.com> (raw)
In-Reply-To: <ZWeljhj9ZH4xrqjw@kernel.org>

Hi Arnaldo,

Thank you for pointing it. From next time I will take care of it.

-Likhitha.

On 30/11/23 02:26, Arnaldo Carvalho de Melo wrote:
> Em Sun, Nov 26, 2023 at 02:09:14AM -0500, Likhitha Korrapati escreveu:
>> The perf test "probe libc's inet_pton & backtrace it with ping" fails on
>> powerpc as below:
>>
>> root@xxx perf]# perf test -v "probe libc's inet_pton & backtrace it with
>> ping"
>>   85: probe libc's inet_pton & backtrace it with ping                 :
>> --- start ---
>> test child forked, pid 96028
>> ping 96056 [002] 127271.101961: probe_libc:inet_pton: (7fffa1779a60)
>> 7fffa1779a60 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> 7fffa172a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> FAIL: expected backtrace entry
>> "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\(/usr/lib64/glibc-hwcaps/power10/libc.so.6\)$"
>> got "7fffa172a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)"
>> test child finished with -1
>> ---- end ----
> Try to have quoted output, the ones separated by ---- at the beginning
> of the line indented two spaces, so as to avoid:
>
> perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
>
> The perf test "probe libc's inet_pton & backtrace it with ping" fails on
> powerpc as below:
>
> root@xxx perf]# perf test -v "probe libc's inet_pton & backtrace it with
> ping"
>   85: probe libc's inet_pton & backtrace it with ping                 :
>
> # Please enter the commit message for your changes. Lines starting
> # with '#' will be ignored, and an empty message aborts the commit.
> #
> # Author:    Likhitha Korrapati <likhitha@linux.ibm.com>
> # Date:      Sun Nov 26 02:09:14 2023 -0500
>
>
> I'm copy and pasting from the original post, thanks!
>
> - Arnaldo
>
>> probe libc's inet_pton & backtrace it with ping: FAILED!
>>
>> This test installs a probe on libc's inet_pton function, which will use
>> uprobes and then uses perf trace on a ping to localhost. It gets 3
>> levels deep backtrace and checks whether it is what we expected or not.
>>
>> The test started failing from RHEL 9.4 where as it works in previous
>> distro version (RHEL 9.2). Test expects gaih_inet function to be part of
>> backtrace. But in the glibc version (2.34-86) which is part of distro
>> where it fails, this function is missing and hence the test is failing.
>>
>>  From nm and ping command output we can confirm that gaih_inet function
>> is not present in the expected backtrace for glibc version glibc-2.34-86
>>
>> [root@xxx perf]# nm /usr/lib64/glibc-hwcaps/power10/libc.so.6 | grep gaih_inet
>> 00000000001273e0 t gaih_inet_serv
>> 00000000001cd8d8 r gaih_inet_typeproto
>>
>> [root@xxx perf]# perf script -i /tmp/perf.data.6E8
>> ping  104048 [000] 128582.508976: probe_libc:inet_pton: (7fff83779a60)
>>              7fff83779a60 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>              7fff8372a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>                 11dc73534 [unknown] (/usr/bin/ping)
>>              7fff8362a8c4 __libc_start_call_main+0x84
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>
>> FAIL: expected backtrace entry
>> "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\(/usr/lib64/glibc-hwcaps/power10/libc.so.6\)$"
>> got "7fff9d52a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)"
>>
>> With version glibc-2.34-60 gaih_inet function is present as part of the
>> expected backtrace. So we cannot just remove the gaih_inet function from
>> the backtrace.
>>
>> [root@xxx perf]# nm /usr/lib64/glibc-hwcaps/power10/libc.so.6 | grep gaih_inet
>> 0000000000130490 t gaih_inet.constprop.0
>> 000000000012e830 t gaih_inet_serv
>> 00000000001d45e4 r gaih_inet_typeproto
>>
>> [root@xxx perf]# ./perf script -i /tmp/perf.data.b6S
>> ping   67906 [000] 22699.591699: probe_libc:inet_pton_3: (7fffbdd80820)
>>              7fffbdd80820 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>              7fffbdd31160 gaih_inet.constprop.0+0xcd0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>              7fffbdd31c7c getaddrinfo+0x14c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>>                 1140d3558 [unknown] (/usr/bin/ping)
>>
>> This patch solves this issue by doing a conditional skip. If there is a
>> gaih_inet function present in the libc then it will be added to the
>> expected backtrace else the function will be skipped from being added
>> to the expected backtrace.
>>
>> Output with the patch
>>
>> [root@xxx perf]# ./perf test -v "probe libc's inet_pton & backtrace it
>> with ping"
>>   83: probe libc's inet_pton & backtrace it with ping                 :
>> --- start ---
>> test child forked, pid 102662
>> ping 102692 [000] 127935.549973: probe_libc:inet_pton: (7fff93379a60)
>> 7fff93379a60 __GI___inet_pton+0x0
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> 7fff9332a73c getaddrinfo+0x121c
>> (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
>> 11ef03534 [unknown] (/usr/bin/ping)
>> test child finished with 0
>> ---- end ----
>> probe libc's inet_pton & backtrace it with ping: Ok
>>
>> Signed-off-by: Likhitha Korrapati <likhitha@linux.ibm.com>
>> Reported-by: Disha Goel <disgoel@linux.ibm.com>
>> ---
>>   tools/perf/tests/shell/record+probe_libc_inet_pton.sh | 5 ++++-
>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> index eebeea6bdc76..72c65570db37 100755
>> --- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> +++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> @@ -45,7 +45,10 @@ trace_libc_inet_pton_backtrace() {
>>   		;;
>>   	ppc64|ppc64le)
>>   		eventattr='max-stack=4'
>> -		echo "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
>> +		# Add gaih_inet to expected backtrace only if it is part of libc.
>> +		if nm $libc | grep -F -q gaih_inet.; then
>> +			echo "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
>> +		fi
>>   		echo "getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
>>   		echo ".*(\+0x[[:xdigit:]]+|\[unknown\])[[:space:]]\(.*/bin/ping.*\)$" >> $expected
>>   		;;
>> -- 
>> 2.39.1
>>

  reply	other threads:[~2023-11-30 10:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-26  7:09 [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc Likhitha Korrapati
2023-11-26  7:09 ` Likhitha Korrapati
2023-11-28  9:57 ` Disha Goel
2023-11-28  9:57   ` Disha Goel
2023-11-28 19:47   ` Ian Rogers
2023-11-28 19:47     ` Ian Rogers
2023-11-29  5:24 ` Athira Rajeev
2023-11-29  5:24   ` Athira Rajeev
2023-11-29 20:56 ` Arnaldo Carvalho de Melo
2023-11-29 20:56   ` Arnaldo Carvalho de Melo
2023-11-30 10:46   ` Likhitha Korrapati [this message]
2023-11-30 10:46     ` Likhitha Korrapati

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=6f6d99fd-9f97-d56a-ef56-3b822ae26f1e@linux.ibm.com \
    --to=likhitha@linux.ibm.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=disgoel@linux.ibm.com \
    --cc=disgoel@linux.vnet.ibm.com \
    --cc=irogers@google.com \
    --cc=james.clark@arm.com \
    --cc=jolsa@kernel.org \
    --cc=kjain@linux.ibm.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.ibm.com \
    --cc=namhyung@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.