From: James Clark <james.clark@linaro.org>
To: Leo Yan <leo.yan@arm.com>
Cc: Jing Zhang <renyu.zj@linux.alibaba.com>,
Guilherme Amadio <amadio@gentoo.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
"Liang, Kan" <kan.liang@linux.intel.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] perf test record+probe_libc_inet_pton: Make test resilient
Date: Tue, 7 Jan 2025 16:51:31 +0000 [thread overview]
Message-ID: <d0ab6e2e-cd57-4477-8171-77b4c2d364f7@linaro.org> (raw)
In-Reply-To: <20241202111958.553403-1-leo.yan@arm.com>
On 02/12/2024 11:19 am, Leo Yan wrote:
> The test failed back and forth due to the call chain being heavily
> impacted by the libc, which varies across different architectures and
> distros.
>
> The libc contains the symbols for "gaih_inet" and "getaddrinfo" in some
> cases, but not always. Moreover, these symbols can be either normal
> symbols or dynamic symbols, making it difficult to decide the call chain
> entries due to the symbols are inconsistent.
>
> To fix the issue, this commit identifies three call chain entries are
> always present. These entries are matched by iterating through the
> lines in the "perf script" result. The recording attribute max-stack is
> set to 4 for the possible maximum call chain depth.
>
> After:
>
> # perf test -vF pton
> --- start ---
> Pattern: ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)
> Matching: ping 285058 [025] 1219802.466939: probe_libc:inet_pton: (ffffa14b7cf0)
> Pattern: .*inet_pton\+0x[[:xdigit:]]+[[:space:]]\(/usr/lib/aarch64-linux-gnu/libc-2.31.so|inlined\)$
> Matching: ping 285058 [025] 1219802.466939: probe_libc:inet_pton: (ffffa14b7cf0)
> Matching: ffffa14b7cf0 __GI___inet_pton+0x0 (/usr/lib/aarch64-linux-gnu/libc-2.31.so)
> Pattern: .*(\+0x[[:xdigit:]]+|\[unknown\])[[:space:]]\(.*/bin/ping.*\)$
> Matching: ping 285058 [025] 1219802.466939: probe_libc:inet_pton: (ffffa14b7cf0)
> Matching: ffffa14b7cf0 __GI___inet_pton+0x0 (/usr/lib/aarch64-linux-gnu/libc-2.31.so)
> Matching: ffffa1488040 getaddrinfo+0xe8 (/usr/lib/aarch64-linux-gnu/libc-2.31.so)
> Matching: aaaab8672da4 [unknown] (/usr/bin/ping)
> ---- end ----
> 82: probe libc's inet_pton & backtrace it with ping : Ok
>
> Reported-by: Jing Zhang <renyu.zj@linux.alibaba.com>
> Closes: https://lore.kernel.org/linux-perf-users/1728978807-81116-1-git-send-email-renyu.zj@linux.alibaba.com/
> Reported-by: Guilherme Amadio <amadio@gentoo.org>
> Closes: https://lore.kernel.org/linux-perf-users/Z0X3AYUWkAgfPpWj@x1/T/#m57327e135b156047e37d214a0d453af6ae1e02be
> Signed-off-by: Leo Yan <leo.yan@arm.com>
> ---
> Changes from v1: Fixed a typo s/Seatch/Search.
>
> .../shell/record+probe_libc_inet_pton.sh | 34 ++++++++++---------
> 1 file changed, 18 insertions(+), 16 deletions(-)
>
Reviewed-by: James Clark <james.clark@linaro.org>
> 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 47a26f25db9f..3fbc7a7409af 100755
> --- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
> +++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
> @@ -43,17 +43,8 @@ trace_libc_inet_pton_backtrace() {
> echo "((__GI_)?getaddrinfo|text_to_binary_address)\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" >> $expected
> echo "(gaih_inet|main)\+0x[[:xdigit:]]+[[:space:]]\(inlined|.*/bin/ping.*\)$" >> $expected
> ;;
> - ppc64|ppc64le)
> - eventattr='max-stack=4'
> - # 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
> - ;;
> *)
> - eventattr='max-stack=3'
> + eventattr='max-stack=4'
> echo ".*(\+0x[[:xdigit:]]+|\[unknown\])[[:space:]]\(.*/bin/ping.*\)$" >> $expected
> ;;
> esac
> @@ -76,14 +67,25 @@ trace_libc_inet_pton_backtrace() {
> fi
> perf script -i $perf_data | tac | grep -m1 ^ping -B9 | tac > $perf_script
>
> - exec 3<$perf_script
> exec 4<$expected
> - while read line <&3 && read -r pattern <&4; do
> + while read -r pattern <&4; do
> + echo "Pattern: $pattern"
> [ -z "$pattern" ] && break
> - echo $line
> - echo "$line" | grep -E -q "$pattern"
> - if [ $? -ne 0 ] ; then
> - printf "FAIL: expected backtrace entry \"%s\" got \"%s\"\n" "$pattern" "$line"
> +
> + found=0
> +
> + # Search lines in the perf script result
> + exec 3<$perf_script
> + while read line <&3; do
> + [ -z "$line" ] && break
> + echo " Matching: $line"
> + ! echo "$line" | grep -E -q "$pattern"
> + found=$?
> + [ $found -eq 1 ] && break
> + done
> +
> + if [ $found -ne 1 ] ; then
> + printf "FAIL: Didn't find the expected backtrace entry \"%s\"\n" "$pattern"
> return 1
> fi
> done
next prev parent reply other threads:[~2025-01-07 16:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-02 11:19 Leo Yan
2024-12-02 13:48 ` Thomas Richter
2024-12-02 20:28 ` Namhyung Kim
2025-01-03 17:47 ` Leo Yan
2025-01-07 16:51 ` James Clark [this message]
2025-01-13 15:50 ` Arnaldo Carvalho de Melo
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=d0ab6e2e-cd57-4477-8171-77b4c2d364f7@linaro.org \
--to=james.clark@linaro.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=amadio@gentoo.org \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=leo.yan@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=namhyung@kernel.org \
--cc=renyu.zj@linux.alibaba.com \
--cc=tmricht@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®