[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d60860b4-e84b-48e1-87dd-4bd8203a69ad@linux.ibm.com>
Date: Tue, 18 Nov 2025 07:15:45 +0100
From: Thomas Richter <tmricht@...ux.ibm.com>
To: Namhyung Kim <namhyung@...nel.org>
Cc: linux-kernel@...r.kernel.org, linux-s390@...r.kernel.org,
linux-perf-users@...r.kernel.org, acme@...nel.org,
agordeev@...ux.ibm.com, gor@...ux.ibm.com, sumanthk@...ux.ibm.com,
hca@...ux.ibm.com, japo@...ux.ibm.com
Subject: Re: [PATCH Linux-next] perf test: Fix test case perf trace BTF
general tests
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@...ux.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
Powered by blists - more mailing lists