* Re: [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
2023-11-26 7:09 [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc Likhitha Korrapati
@ 2023-11-28 9:57 ` Disha Goel
2023-11-28 19:47 ` Ian Rogers
2023-11-29 5:24 ` Athira Rajeev
2023-11-29 20:56 ` Arnaldo Carvalho de Melo
2 siblings, 1 reply; 6+ messages in thread
From: Disha Goel @ 2023-11-28 9:57 UTC (permalink / raw)
To: Likhitha Korrapati, acme, jolsa, adrian.hunter, irogers,
james.clark, namhyung
Cc: linux-perf-users, linuxppc-dev, maddy, atrajeev, kjain, disgoel
On 26/11/23 12:39 pm, Likhitha Korrapati wrote:
> 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 ----
> 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>
Thanks for the fix patch.
I have tested on a Power10 machine, "probe libc's inet_pton & backtrace it with ping"
perf test passes with the patch applied.
Output where gaih_inet function is not present
# 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 4622
ping 4652 [011] 58.987631: probe_libc:inet_pton: (7fff91b79a60)
7fff91b79a60 __GI___inet_pton+0x0 (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
7fff91b2a73c getaddrinfo+0x121c (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
119e53534 [unknown] (/usr/bin/ping)
test child finished with 0
---- end ----
probe libc's inet_pton & backtrace it with ping: Ok
Output where gaih_inet function is present
# ./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 84831
ping 84861 [000] 79056.019971: probe_libc:inet_pton: (7fff957631e8)
7fff957631e8 __GI___inet_pton+0x8 (/usr/lib64/glibc-hwcaps/power9/libc-2.28.so)
7fff95718760 gaih_inet.constprop.6+0xa90 (/usr/lib64/glibc-hwcaps/power9/libc-2.28.so)
7fff95719974 getaddrinfo+0x164 (/usr/lib64/glibc-hwcaps/power9/libc-2.28.so)
122e732a4 [unknown] (/usr/bin/ping)
test child finished with 0
---- end ----
probe libc's inet_pton & backtrace it with ping: Ok
Tested-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
> ;;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
2023-11-28 9:57 ` Disha Goel
@ 2023-11-28 19:47 ` Ian Rogers
0 siblings, 0 replies; 6+ messages in thread
From: Ian Rogers @ 2023-11-28 19:47 UTC (permalink / raw)
To: Disha Goel
Cc: Likhitha Korrapati, acme, jolsa, adrian.hunter, james.clark,
namhyung, linux-perf-users, linuxppc-dev, maddy, atrajeev, kjain,
disgoel
On Tue, Nov 28, 2023 at 1:57 AM Disha Goel <disgoel@linux.ibm.com> wrote:
>
> On 26/11/23 12:39 pm, Likhitha Korrapati wrote:
>
> > 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 ----
> > 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>
>
> Thanks for the fix patch.
> I have tested on a Power10 machine, "probe libc's inet_pton & backtrace it with ping"
> perf test passes with the patch applied.
>
> Output where gaih_inet function is not present
>
> # 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 4622
> ping 4652 [011] 58.987631: probe_libc:inet_pton: (7fff91b79a60)
> 7fff91b79a60 __GI___inet_pton+0x0 (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
> 7fff91b2a73c getaddrinfo+0x121c (/usr/lib64/glibc-hwcaps/power10/libc.so.6)
> 119e53534 [unknown] (/usr/bin/ping)
> test child finished with 0
> ---- end ----
> probe libc's inet_pton & backtrace it with ping: Ok
>
> Output where gaih_inet function is present
>
> # ./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 84831
> ping 84861 [000] 79056.019971: probe_libc:inet_pton: (7fff957631e8)
> 7fff957631e8 __GI___inet_pton+0x8 (/usr/lib64/glibc-hwcaps/power9/libc-2.28.so)
> 7fff95718760 gaih_inet.constprop.6+0xa90 (/usr/lib64/glibc-hwcaps/power9/libc-2.28.so)
> 7fff95719974 getaddrinfo+0x164 (/usr/lib64/glibc-hwcaps/power9/libc-2.28.so)
> 122e732a4 [unknown] (/usr/bin/ping)
> test child finished with 0
> ---- end ----
> probe libc's inet_pton & backtrace it with ping: Ok
>
> Tested-by: Disha Goel <disgoel@linux.ibm.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
>
> > ---
> > 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
> > ;;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
2023-11-26 7:09 [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc Likhitha Korrapati
2023-11-28 9:57 ` Disha Goel
@ 2023-11-29 5:24 ` Athira Rajeev
2023-11-29 20:56 ` Arnaldo Carvalho de Melo
2 siblings, 0 replies; 6+ messages in thread
From: Athira Rajeev @ 2023-11-29 5:24 UTC (permalink / raw)
To: Likhitha Korrapati, Arnaldo Carvalho de Melo, Namhyung Kim,
Ian Rogers
Cc: Jiri Olsa, Adrian Hunter, Disha Goel, Kajol Jain,
linux-perf-users, Madhavan Srinivasan, Disha Goel, linuxppc-dev,
James Clark
> On 26-Nov-2023, at 12:39 PM, Likhitha Korrapati <likhitha@linux.ibm.com> wrote:
>
> 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 ----
> probe libc's inet_pton & backtrace it with ping: FAILED!
Reviewed-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Thanks
Athira
>
> 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
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
2023-11-26 7:09 [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc Likhitha Korrapati
2023-11-28 9:57 ` Disha Goel
2023-11-29 5:24 ` Athira Rajeev
@ 2023-11-29 20:56 ` Arnaldo Carvalho de Melo
2023-11-30 10:46 ` Likhitha Korrapati
2 siblings, 1 reply; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2023-11-29 20:56 UTC (permalink / raw)
To: Likhitha Korrapati
Cc: jolsa, adrian.hunter, irogers, james.clark, namhyung,
linux-perf-users, linuxppc-dev, maddy, atrajeev, kjain, disgoel,
Disha Goel
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
>
--
- Arnaldo
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf test record+probe_libc_inet_pton: Fix call chain match on powerpc
2023-11-29 20:56 ` Arnaldo Carvalho de Melo
@ 2023-11-30 10:46 ` Likhitha Korrapati
0 siblings, 0 replies; 6+ messages in thread
From: Likhitha Korrapati @ 2023-11-30 10:46 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: jolsa, adrian.hunter, irogers, james.clark, namhyung,
linux-perf-users, linuxppc-dev, maddy, atrajeev, kjain, disgoel,
Disha Goel
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
>>
^ permalink raw reply [flat|nested] 6+ messages in thread