* [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test
@ 2026-02-17 14:32 Gregory Bell
2026-02-17 14:32 ` [PATCH bpf-next v2 1/2] " Gregory Bell
` (2 more replies)
0 siblings, 3 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 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
On RHEL we consistently hit the reported failure on the first run of
the test following installation, after which subsequent runs pass.
This patch implements the approach discussed in the following thread:
https://lore.kernel.org/all/CAEf4BzYWVtfZh07iQm5Fo=kMm+8hgAu+rXRx1uLRHz07wc59+Q@mail.gmail.com/
Following the discussion, the fix makes the test verify eviction rather
than assuming it. In the discussion it was recommended to add a sleep before
and after the madvise operations, this did not resolve the issue in our case,
rather the test timed out every time. I was successful by retrying the
page-out sequence until the page is actually evicted.
Additionally, the mapping alignment is increased to
64K so the test operates on a properly page-aligned buffer across
supported architectures.
changelog:
- fixed indentations
- removed trailing whitespace
- add space between opening and closing brackets
Gregory Bell (2):
selftests/bpf: fix flaky build_id test
selftests/bpf: align build_id test mapping to 64K page size
tools/testing/selftests/bpf/uprobe_multi.c | 19 ++++++++++++++++---
tools/testing/selftests/bpf/uprobe_multi.ld | 4 ++--
2 files changed, 18 insertions(+), 5 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [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
end of thread, other threads:[~2026-02-19 21:15 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH bpf-next v2 0/2] selftests/bpf: fix flaky build_id test patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox