* [PATCH bpf-next v2 1/2] selftests/bpf: fix flaky build_id test
2026-02-17 14:32 [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test Gregory Bell
@ 2026-02-17 14:32 ` Gregory Bell
2026-02-17 14:32 ` [PATCH bpf-next v2 2/2] selftests/bpf: align build_id test mapping to 64K page size Gregory Bell
2026-02-19 21:15 ` [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Gregory Bell @ 2026-02-17 14:32 UTC (permalink / raw)
To: bpf
Cc: andrii, eddyz87, ast, daniel, martin.lau, song, yonghong.song,
john.fastabend, kpsingh, sdf, haoluo, jolsa, shuah, Gregory Bell
The build_id selftest occasionally fails because MADV_PAGEOUT
does not guarantee the immediate eviction of the page. The test
assumes eviction happens and proceeds without verifying
that the page was actually reclaimed, leading to false test
failures.
Fix the test by retrying the page-out sequence until eviction
is successful, instead of relying on a single MADV_PAGEOUT attempt.
Signed-off-by: Gregory Bell <grbell@redhat.com>
---
tools/testing/selftests/bpf/uprobe_multi.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/bpf/uprobe_multi.c b/tools/testing/selftests/bpf/uprobe_multi.c
index dd38dc68f635..3e58a86b8e25 100644
--- a/tools/testing/selftests/bpf/uprobe_multi.c
+++ b/tools/testing/selftests/bpf/uprobe_multi.c
@@ -100,6 +100,9 @@ int __attribute__((weak)) trigger_uprobe(bool build_id_resident)
int page_sz = sysconf(_SC_PAGESIZE);
void *addr;
+ unsigned char vec[1];
+ int poll = 0;
+
/* page-align build ID start */
addr = (void *)((uintptr_t)&build_id_start & ~(page_sz - 1));
@@ -108,9 +111,19 @@ int __attribute__((weak)) trigger_uprobe(bool build_id_resident)
* do MADV_POPULATE_READ, and then MADV_PAGEOUT, if necessary
*/
madvise(addr, page_sz, MADV_POPULATE_READ);
- if (!build_id_resident)
- madvise(addr, page_sz, MADV_PAGEOUT);
-
+ if (!build_id_resident) {
+ do {
+ madvise(addr, page_sz, MADV_PAGEOUT);
+ /* check if page has been evicted */
+ mincore(addr, page_sz, vec);
+ if (!(vec[0] & 1))
+ break;
+ /* if page is still resident re-attempt MADV_POPULATE_READ/MADV_PAGEOUT */
+ madvise(addr, page_sz, MADV_POPULATE_READ);
+ poll++;
+ usleep(100);
+ } while (poll < 500);
+ }
(void)uprobe();
return 0;
--
2.52.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH bpf-next v2 2/2] selftests/bpf: align build_id test mapping to 64K page size
2026-02-17 14:32 [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test Gregory Bell
2026-02-17 14:32 ` [PATCH bpf-next v2 1/2] " Gregory Bell
@ 2026-02-17 14:32 ` Gregory Bell
2026-02-19 21:15 ` [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Gregory Bell @ 2026-02-17 14:32 UTC (permalink / raw)
To: bpf
Cc: andrii, eddyz87, ast, daniel, martin.lau, song, yonghong.song,
john.fastabend, kpsingh, sdf, haoluo, jolsa, shuah, Gregory Bell
Some architectures require mappings to be aligned to the system page size.
The build_id selftest currently uses a smaller alignment, which can result
in madvise operations executing on a different page than intended.
Increase the mapping alignment to 64K so the buffer is page-aligned on
all supported architectures.
Signed-off-by: Gregory Bell <grbell@redhat.com>
---
tools/testing/selftests/bpf/uprobe_multi.ld | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/uprobe_multi.ld b/tools/testing/selftests/bpf/uprobe_multi.ld
index a2e94828bc8c..2063714b2899 100644
--- a/tools/testing/selftests/bpf/uprobe_multi.ld
+++ b/tools/testing/selftests/bpf/uprobe_multi.ld
@@ -1,8 +1,8 @@
SECTIONS
{
- . = ALIGN(4096);
+ . = ALIGN(65536);
.note.gnu.build-id : { *(.note.gnu.build-id) }
- . = ALIGN(4096);
+ . = ALIGN(65536);
}
INSERT AFTER .text;
--
2.52.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test
2026-02-17 14:32 [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test Gregory Bell
2026-02-17 14:32 ` [PATCH bpf-next v2 1/2] " Gregory Bell
2026-02-17 14:32 ` [PATCH bpf-next v2 2/2] selftests/bpf: align build_id test mapping to 64K page size Gregory Bell
@ 2026-02-19 21:15 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-02-19 21:15 UTC (permalink / raw)
To: Gregory Bell
Cc: bpf, andrii, eddyz87, ast, daniel, martin.lau, song,
yonghong.song, john.fastabend, kpsingh, sdf, haoluo, jolsa, shuah
Hello:
This series was applied to bpf/bpf-next.git (master)
by Alexei Starovoitov <ast@kernel.org>:
On Tue, 17 Feb 2026 09:32:35 -0500 you wrote:
> The build_id selftest intermittently fails with the following error:
>
> ./test_progs -t build_id/nofault-paged-out
> serial_test_build_id:PASS:parse_build_id 0 nsec
> subtest_nofault:PASS:skel_open 0 nsec
> subtest_nofault:PASS:link 0 nsec
> subtest_nofault:PASS:trigger_uprobe 0 nsec
> subtest_nofault:PASS:res 0 nsec
> subtest_nofault:FAIL:build_id_status unexpected build_id_status: actual 1 != expected 2
> 46/1 build_id/nofault-paged-out:FAIL
> 46 build_id:FAIL
> 397 stacktrace_build_id:OK
> 398 stacktrace_build_id_nmi:OK
>
> [...]
Here is the summary with links:
- [bpf-next,v2,1/2] selftests/bpf: fix flaky build_id test
https://git.kernel.org/bpf/bpf-next/c/d820fa311482
- [bpf-next,v2,2/2] selftests/bpf: align build_id test mapping to 64K page size
https://git.kernel.org/bpf/bpf-next/c/18a1d365e825
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 4+ messages in thread