Re: [PATCH Linux-next] perf test: Fix test case perf trace BTF general tests

Namhyung Kim
2025-11-18T01:58:26Z

Hello,

On Mon, Nov 17, 2025 at 01:43:59PM +0100, Thomas Richter wrote:
> The following test case fails on linux-next repo:
>
> ❯ uname -a
> Linux s83lp47.lnxne.boe 6.18.0-20251116.rc5.git0.0f2995693867.63.\
> fc42.s390x+next #1 SMP Sun Nov 16 20:05:28 CET 2025 s390x GNU/Linux
>
> # perf test -Fv 109
> --- start ---
> Checking if vmlinux BTF exists
> Testing perf trace's string augmentation
> Testing perf trace's buffer augmentation
> Buffer augmentation test failed, output:
> buffer content
> echo/23281 write(1, buffer conten, 15, "") = 15
> ---- end ----
> 109: perf trace BTF general tests : FAILED!
> #
>
> The root case is a changed output format on linux-next.
> There is an addional "" string as forth parameter in the write()
> line. Here is the detailed output on linux-repo.
> Please note that this depends on the kernel and not on the perf tool.

Thanks for the report. Do you know what the 4th arg is? It'd be nice
if you can dump the contents of the event format which is
/sys/kernel/tracing/events/syscalls/sys_enter_write/format.

Thanks,
Namhyung

>
> Output on linux next kernel:
> # uname -a
> Linux f43 6.18.0-rc5-next-20251114tmr-n #1 SMP PREEMPT_DYNAMIC ...
> # perf config trace.show_arg_names=false trace.show_duration=false \
> trace.show_timestamp=false trace.args_alignment=0
> # ./perf trace --sort-events -e write --max-events=1 \
> -- echo 'buffer content' 1>/dev/null
> echo/7676 write(1, buffer content\10, 15, "") = 15
> #
>
> Output on linux kernel:
> # uname -a
> Linux b3560002.lnxne.boe 6.18.0-rc5m-perf #6 ....
> # perf config trace.show_arg_names=false trace.show_duration=false \
> trace.show_timestamp=false trace.args_alignment=0
> # ./perf trace --sort-events -e write --max-events=1 \
> -- echo 'buffer content' 1>/dev/null
> echo/36932 write(1, buffer content\10, 15) = 15
> #
>
> Add the optional forth parameter in the extented regular expression to
> accept both output formats.
>
> Output after:
> # ./perf test -Fv 'perf trace BTF general tests'
> --- start ---
> Checking if vmlinux BTF exists
> Testing perf trace's string augmentation
> Testing perf trace's buffer augmentation
> Testing perf trace's struct augmentation
> ---- end ----
> 115: perf trace BTF general tests : Ok
> #
>
> Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
> ---
> tools/perf/tests/shell/trace_btf_general.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/tests/shell/trace_btf_general.sh b/tools/perf/tests/shell/trace_btf_general.sh
> index ef2da806be6b..9cd6180062d8 100755
> --- a/tools/perf/tests/shell/trace_btf_general.sh
> +++ b/tools/perf/tests/shell/trace_btf_general.sh
> @@ -39,7 +39,7 @@ trace_test_buffer() {
> echo "Testing perf trace's buffer augmentation"
> # echo will insert a newline (\10) at the end of the buffer
> output="$(perf trace --sort-events -e write --max-events=1 -- echo "${buffer}" 2>&1)"
> - if ! echo "$output" | grep -q -E "^echo/[0-9]+ write\([0-9]+, ${buffer}.*, [0-9]+\) += +[0-9]+$"
> + if ! echo "$output" | grep -qE "^echo/[0-9]+ write\([0-9]+, ${buffer}\\\\10, [0-9]+(, ..)?\) += +[0-9]+$"
> then
> printf "Buffer augmentation test failed, output:\n$output\n"
> err=1
> --
> 2.51.1
>