]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
perf test: Fix inet_pton probe failure and unroll call graph
authorIan Rogers <irogers@google.com>
Sat, 11 Apr 2026 19:37:05 +0000 (12:37 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Tue, 14 Apr 2026 06:28:14 +0000 (23:28 -0700)
commitc7fe4e5665b7c31a24d362229182f6ee27e07233
treed091fae44f8c7364f57b93688495e42507d44bd9
parent97ab89686a9e5d087042dbe73604a32b3de72653
perf test: Fix inet_pton probe failure and unroll call graph

When adding a probe for libc's inet_pton, perf probe may create multiple
probe points (e.g., due to inlining or multiple symbol resolutions),
resulting in multiple identical event names being output (e.g.,
`probe_libc:inet_pton_1`).

The script previously used a brittle pipeline (`tail -n +2 | head -n -5`)
and an awk script to extract the event name. When multiple probes were
added, awk would output the event name multiple times, which expanded
to multiple words in bash. This broke the subsequent `perf record` and
`perf probe -d` commands, causing the test to fail with:
`Error: another command except --add is set.`

Fix this by removing the brittle `tail/head` commands and appending
`| head -n 1` to the awk extraction. This ensures that only a single,
unique event name is captured, regardless of how many probe points
are created.

Additionally, the test artificially limited the backtrace size via
`max-stack=4` and did not specify dwarf call graphs for non-s390x
architectures. In newer libc versions where `inet_pton` is nested
deeper or compiled without frame pointers, `perf script` failed to resolve
the backtrace up to `/bin/ping`. Fix this by explicitly collecting
dwarf call-graphs for all architectures and increasing `max-stack` to 8.

Assisted-by: Gemini:gemini-3.1-pro-preview
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/tests/shell/record+probe_libc_inet_pton.sh