Re: [PATCH v5 00/11] perf: Support multiple system call tables in the build

From: Arnaldo Carvalho de Melo
Date: Fri Mar 14 2025 - 13:11:05 EST


On Thu, Mar 13, 2025 at 10:45:49PM -0700, Namhyung Kim wrote:
> On Thu, Mar 13, 2025 at 05:47:27PM -0300, Arnaldo Carvalho de Melo wrote:
> > On Thu, Mar 13, 2025 at 05:20:09PM -0300, Arnaldo Carvalho de Melo wrote:
> > > Still building, but noticed this on x86_64:
> > >
> > > 105: perf trace enum augmentation tests : FAILED!
> > > 106: perf trace BTF general tests : FAILED!
> > > 107: perf trace exit race : Ok
> > > 108: perf trace record and replay : FAILED!
> > >
> > >
> > > The first doesn´t help that much with verbose mode, haven't checked if
> > > before this series it was failing :-\
> > >
> > > root@x1:~# perf test -vvv 105
> > > 105: perf trace enum augmentation tests:
> > > --- start ---
> > > test child forked, pid 19411
> > > Checking if vmlinux exists
> > > Tracing syscall landlock_add_rule
> > > ---- end(-1) ----
> > > 105: perf trace enum augmentation tests : FAILED!
> > > root@x1:~#
> >
> > So:
> >
> > root@x1:~# perf trace -e landlock_add_rule perf test -w landlock
> > root@x1:~#
> >
> > But:
> >
> > root@x1:~# perf trace perf test -w landlock |& grep landlock_add_rule
> > 26.120 ( 0.002 ms): perf/19791 landlock_add_rule(ruleset_fd: 11, rule_type: LANDLOCK_RULE_PATH_BENEATH, rule_attr: 0x7ffde75e2680, flags: 45) = -1 EINVAL (Invalid argument)
> > 26.124 ( 0.001 ms): perf/19791 landlock_add_rule(ruleset_fd: 11, rule_type: LANDLOCK_RULE_NET_PORT, rule_attr: 0x7ffde75e2690, flags: 45) = -1 EINVAL (Invalid argument)
> > root@x1:~#
> >
> > -e is having some trouble, when no event is specified, then it works.
> >
> > Something in the changes made to:
> >
> > static int trace__parse_events_option(const struct option *opt, const char *str,
> > int unset __maybe_unused)
>
> Thanks for the test, I think this should fix it:
>

Well, not really:

root@number:~# perf trace -e landlock_add_rule perf test -w landlock
perf: Segmentation fault
Obtained 10 stack frames.
perf() [0x5be761]
perf() [0x5be7f9]
/lib64/libc.so.6(+0x40fd0) [0x7fe005c4efd0]
perf() [0x491bc1]
perf() [0x497090]
perf() [0x4973ab]
perf() [0x413483]
/lib64/libc.so.6(+0x2a088) [0x7fe005c38088]
/lib64/libc.so.6(__libc_start_main+0x8b) [0x7fe005c3814b]
perf() [0x413ad5]
Segmentation fault (core dumped)
root@number:~#

Time for me to test another patch from Ian, the one symbolizing the
above backtrace...

- Arnaldo


>
>
> ---8<---
> diff --git a/tools/perf/util/syscalltbl.c b/tools/perf/util/syscalltbl.c
> index ace66e69c1bcde1e..67a8ec10e9e4bc8d 100644
> --- a/tools/perf/util/syscalltbl.c
> +++ b/tools/perf/util/syscalltbl.c
> @@ -76,7 +76,7 @@ int syscalltbl__id(int e_machine, const char *name)
> {
> const struct syscalltbl *table = find_table(e_machine);
> struct syscall_cmp_key key;
> - const int *id;
> + const uint16_t *id;
>
> if (!table)
> return -1;