* [PATCH bpf-next v2] selftests/bpf: Report the real error from libarena parallel workers
@ 2026-07-23 6:13 Jiayuan Chen
2026-07-23 6:24 ` sashiko-bot
0 siblings, 1 reply; 3+ messages in thread
From: Jiayuan Chen @ 2026-07-23 6:13 UTC (permalink / raw)
To: bpf
Cc: Jiayuan Chen, Andrii Nakryiko, Eduard Zingerman,
Alexei Starovoitov, Daniel Borkmann, Kumar Kartikeya Dwivedi,
Martin KaFai Lau, Song Liu, Yonghong Song, Jiri Olsa,
Emil Tsalapatis, Shuah Khan, Ihor Solodrai, linux-kselftest,
linux-kernel
Several CI runs failed in the libarena parallel tests with -4 (-EINTR) [1],
which says nothing about what actually went wrong.
Two workers can fail like this:
worker 1: gives up, e.g. the rendezvous times out, sets test_abort and
returns its own error (-ETIMEDOUT)
worker 2: sees test_abort and returns -EINTR
-EINTR only means "someone else already gave up", so it carries no
information. Which of the two gets reported depends on the order
pthread_join() collects them, because
err = err ?: (long)thread_ret;
keeps the first non-zero value and drops the rest. When the -EINTR worker
comes first, the error describing the actual failure is lost.
Skip -EINTR entirely: a worker only returns it once another worker has
already reported the real error, so report and log only the real errors.
It is still unclear whether the timeouts come from CI load or from a
problem in the test itself. Report the error accurately first, so the next
failure can be diagnosed.
[1]:
https://github.com/kernel-patches/bpf/actions/runs/29867905253/job/88764463566
https://github.com/kernel-patches/bpf/actions/runs/29878191901/job/88794845824
Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
---
v1 -> v2:
- hoist the worker_err declaration to the top of the function
- skip -EINTR workers entirely: do not aggregate and do not log them
- comment/commit message wording fixes
v1: https://lore.kernel.org/bpf/20260722064713.357277-1-jiayuan.chen@linux.dev/
---
.../selftests/bpf/prog_tests/libarena.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/libarena.c b/tools/testing/selftests/bpf/prog_tests/libarena.c
index df7e4b8dc394..daade4150af6 100644
--- a/tools/testing/selftests/bpf/prog_tests/libarena.c
+++ b/tools/testing/selftests/bpf/prog_tests/libarena.c
@@ -73,6 +73,7 @@ static int run_libarena_parallel_test_workers(struct libarena *skel,
uint32_t nthreads;
void *thread_ret;
int ret, err = 0;
+ int worker_err;
int i;
for (nthreads = 0; nthreads < UINT_MAX; nthreads++) {
@@ -118,7 +119,22 @@ static int run_libarena_parallel_test_workers(struct libarena *skel,
continue;
}
- err = err ?: (long)thread_ret;
+ worker_err = (long)thread_ret;
+
+ /*
+ * A worker that bails out because another one already gave up
+ * reports -EINTR. It is collateral damage that carries no
+ * information, so skip it entirely: never let it become the
+ * reported error, and don't log it either.
+ */
+ if (!worker_err || worker_err == -EINTR)
+ continue;
+
+ if (!err)
+ err = worker_err;
+
+ fprintf(stdout, "%.*s__%d returned %d\n", (int)prefixlen, name,
+ i, worker_err);
}
free(threads);
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH bpf-next v2] selftests/bpf: Report the real error from libarena parallel workers
2026-07-23 6:13 [PATCH bpf-next v2] selftests/bpf: Report the real error from libarena parallel workers Jiayuan Chen
@ 2026-07-23 6:24 ` sashiko-bot
2026-07-23 6:39 ` Jiayuan Chen
0 siblings, 1 reply; 3+ messages in thread
From: sashiko-bot @ 2026-07-23 6:24 UTC (permalink / raw)
To: Jiayuan Chen; +Cc: bpf
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Skipping `-EINTR` completely causes interrupted tests to falsely pass.
--
--- Patch [1]: [PATCH bpf-next v2] selftests/bpf: Report the real error from libarena parallel workers ---
commit a35a4526e56449664def8e15919986cc43126b84
Author: Jiayuan Chen <jiayuan.chen@linux.dev>
selftests/bpf: Report the real error from libarena parallel workers
This commit updates the error collection logic in the libarena parallel
tests to skip -EINTR. The goal is to ensure the real failure is reported
rather than losing it when another worker thread bails out early.
Link: https://github.com/kernel-patches/bpf/actions/runs/29867905253/job/88764463566
Link: https://github.com/kernel-patches/bpf/actions/runs/29878191901/job/88794845824
> diff --git a/tools/testing/selftests/bpf/prog_tests/libarena.c b/tools/testing/selftests/bpf/prog_tests/libarena.c
> index df7e4b8dc3945..daade4150af66 100644
> --- a/tools/testing/selftests/bpf/prog_tests/libarena.c
> +++ b/tools/testing/selftests/bpf/prog_tests/libarena.c
[ ... ]
> @@ -118,7 +119,22 @@ static int run_libarena_parallel_test_workers(struct libarena *skel,
> continue;
> }
>
> - err = err ?: (long)thread_ret;
> + worker_err = (long)thread_ret;
> +
> + /*
> + * A worker that bails out because another one already gave up
> + * reports -EINTR. It is collateral damage that carries no
> + * information, so skip it entirely: never let it become the
> + * reported error, and don't log it either.
> + */
> + if (!worker_err || worker_err == -EINTR)
> + continue;
> +
> + if (!err)
> + err = worker_err;
[Severity: Medium]
If all worker threads return -EINTR due to a process-wide signal, such as a
global CI timeout or user SIGINT, does this loop leave err initialized to 0
and falsely report the test as passed?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260723061347.398591-1-jiayuan.chen@linux.dev?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH bpf-next v2] selftests/bpf: Report the real error from libarena parallel workers
2026-07-23 6:24 ` sashiko-bot
@ 2026-07-23 6:39 ` Jiayuan Chen
0 siblings, 0 replies; 3+ messages in thread
From: Jiayuan Chen @ 2026-07-23 6:39 UTC (permalink / raw)
To: sashiko-reviews; +Cc: bpf
On 7/23/26 2:24 PM, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] Skipping `-EINTR` completely causes interrupted tests to falsely pass.
> --
>
> --- Patch [1]: [PATCH bpf-next v2] selftests/bpf: Report the real error from libarena parallel workers ---
> commit a35a4526e56449664def8e15919986cc43126b84
> Author: Jiayuan Chen <jiayuan.chen@linux.dev>
>
> selftests/bpf: Report the real error from libarena parallel workers
>
> This commit updates the error collection logic in the libarena parallel
> tests to skip -EINTR. The goal is to ensure the real failure is reported
> rather than losing it when another worker thread bails out early.
>
> Link: https://github.com/kernel-patches/bpf/actions/runs/29867905253/job/88764463566
> Link: https://github.com/kernel-patches/bpf/actions/runs/29878191901/job/88794845824
>
>> diff --git a/tools/testing/selftests/bpf/prog_tests/libarena.c b/tools/testing/selftests/bpf/prog_tests/libarena.c
>> index df7e4b8dc3945..daade4150af66 100644
>> --- a/tools/testing/selftests/bpf/prog_tests/libarena.c
>> +++ b/tools/testing/selftests/bpf/prog_tests/libarena.c
> [ ... ]
>
>> @@ -118,7 +119,22 @@ static int run_libarena_parallel_test_workers(struct libarena *skel,
>> continue;
>> }
>>
>> - err = err ?: (long)thread_ret;
>> + worker_err = (long)thread_ret;
>> +
>> + /*
>> + * A worker that bails out because another one already gave up
>> + * reports -EINTR. It is collateral damage that carries no
>> + * information, so skip it entirely: never let it become the
>> + * reported error, and don't log it either.
>> + */
>> + if (!worker_err || worker_err == -EINTR)
>> + continue;
>> +
>> + if (!err)
>> + err = worker_err;
> [Severity: Medium]
> If all worker threads return -EINTR due to a process-wide signal, such as a
> global CI timeout or user SIGINT, does this loop leave err initialized to 0
> and falsely report the test as passed?
The bpf_prog_test_run_syscall() path has no way to return -EINTR; a
worker returns -EINTR only
when test_abort is true, and test_abort is never set without another
worker returning the
real error, so the workers can never all return -EINTR.
And even if some future signal-based exit were added to the syscall
path, by then correctness
is already moot....
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-23 6:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-23 6:13 [PATCH bpf-next v2] selftests/bpf: Report the real error from libarena parallel workers Jiayuan Chen
2026-07-23 6:24 ` sashiko-bot
2026-07-23 6:39 ` Jiayuan Chen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox