On Thu, Apr 24, 2025 at 5:51 AM Jiri Olsa <olsajiri@xxxxxxxxx> wrote: > > On Wed, Apr 23, 2025 at 10:42:43AM -0700, Andrii Nakryiko wrote: > > SNIP > > > > + > > > +static void test_uprobe_race(void) > > > +{ > > > + int err, i, nr_threads; > > > + pthread_t *threads; > > > + > > > + nr_threads = libbpf_num_possible_cpus(); > > > + if (!ASSERT_GE(nr_threads, 0, "libbpf_num_possible_cpus")) > > > > I hope there are strictly more than zero CPUs... ;) > > > > > + return; > > > + > > > + threads = malloc(sizeof(*threads) * nr_threads); > > > + if (!ASSERT_OK_PTR(threads, "malloc")) > > > + return; > > > + > > > + for (i = 0; i < nr_threads; i++) { > > > + err = pthread_create(&threads[i], NULL, i % 2 ? worker_trigger : worker_attach, > > > + NULL); > > > > What happens when three is just one CPU? > > > > right, we need at least 2 threads, how about the change below > > thanks, > jirka > > > --- > diff --git a/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c b/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c > index d55c3579cebe..c885f097eed4 100644 > --- a/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c > +++ b/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c > @@ -701,8 +701,9 @@ static void test_uprobe_race(void) > pthread_t *threads; > > nr_threads = libbpf_num_possible_cpus(); > - if (!ASSERT_GE(nr_threads, 0, "libbpf_num_possible_cpus")) > + if (!ASSERT_GT(nr_threads, 0, "libbpf_num_possible_cpus")) > return; > + nr_threads = max(2, nr_threads); yep, ack > > threads = malloc(sizeof(*threads) * nr_threads); > if (!ASSERT_OK_PTR(threads, "malloc"))