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

Thomas Richter
2025-11-18T06:16:16Z

On 11/18/25 02:58, Namhyung Kim wrote:
> 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
>

Here is the output from my x86 virtual machine with linux-next 20251114 tag.

bash-5.3# uname -a
Linux f43 6.18.0-rc5-next-20251114tmr-n #1 SMP PREEMPT_DYNAMIC Mon Nov 17 11:24:02 CET 2025 x86_64 GNU/Linux
bash-5.3# cat /sys/kernel/tracing/events/syscalls/sys_enter_write/format
name: sys_enter_write
ID: 758
format:
field:unsigned short common_type; offset:0; size:2; signed:0;
field:unsigned char common_flags; offset:2; size:1; signed:0;
field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
field:int common_pid; offset:4; size:4; signed:1;

field:int __syscall_nr; offset:8; size:4; signed:1;
field:unsigned int fd; offset:16; size:8; signed:0;
field:const char * buf; offset:24; size:8; signed:0;
field:size_t count; offset:32; size:8; signed:0;
field:__data_loc char[] __buf_val; offset:40; size:4; signed:0;

print fmt: "fd: 0x%08lx, buf: 0x%08lx (%s), count: 0x%08lx", ((unsigned long)(REC->fd)), ((unsigned long)(REC->buf)), __print_dynamic_array(__buf_val, 1), ((unsigned long)(REC->count))
bash-5.3#

Hope this helps.

>>
>> 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
>>

--
Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany
--
IBM Deutschland Research & Development GmbH

Vorsitzender des Aufsichtsrats: Wolfgang Wendt

Geschäftsführung: David Faller

Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294