On 1/7/26 10:37, Miaohe Lin wrote:
Introduce selftests to validate the functionality of memory failure.
These tests help ensure that memory failure handling for anonymous
pages, pagecaches pages works correctly, including proper SIGBUS
delivery to user processes, page isolation, and recovery paths.
Currently madvise syscall is used to inject memory failures. And only
anonymous pages and pagecaches are tested. More test scenarios, e.g.
hugetlb, shmem, thp, will be added. Also more memory failure injecting
methods will be supported, e.g. APEI Error INJection, if required.
0day reports that these tests fail:
# # ------------------------
# # running ./memory-failure
# # ------------------------
# # TAP version 13
# # 1..6
# # # Starting 6 tests from 2 test cases.
# # # RUN memory_failure.madv_hard.anon ...
# # # OK memory_failure.madv_hard.anon
# # ok 1 memory_failure.madv_hard.anon
# # # RUN memory_failure.madv_hard.clean_pagecache ...
# # # memory-failure.c:166:clean_pagecache:Expected setjmp (1) == 0 (0)
# # # clean_pagecache: Test terminated by assertion
# # # FAIL memory_failure.madv_hard.clean_pagecache
# # not ok 2 memory_failure.madv_hard.clean_pagecache
# # # RUN memory_failure.madv_hard.dirty_pagecache ...
# # # memory-failure.c:207:dirty_pagecache:Expected unpoison_memory(self->pfn)
(-16) == 0 (0)
# # # dirty_pagecache: Test terminated by assertion
# # # FAIL memory_failure.madv_hard.dirty_pagecache
# # not ok 3 memory_failure.madv_hard.dirty_pagecache
# # # RUN memory_failure.madv_soft.anon ...
# # # OK memory_failure.madv_soft.anon
# # ok 4 memory_failure.madv_soft.anon
# # # RUN memory_failure.madv_soft.clean_pagecache ...
# # # memory-failure.c:282:clean_pagecache:Expected variant->inject(self, addr)
(-1) == 0 (0)
# # # clean_pagecache: Test terminated by assertion
# # # FAIL memory_failure.madv_soft.clean_pagecache
# # not ok 5 memory_failure.madv_soft.clean_pagecache
# # # RUN memory_failure.madv_soft.dirty_pagecache ...
# # # memory-failure.c:319:dirty_pagecache:Expected variant->inject(self, addr)
(-1) == 0 (0)
# # # dirty_pagecache: Test terminated by assertion
# # # FAIL memory_failure.madv_soft.dirty_pagecache
# # not ok 6 memory_failure.madv_soft.dirty_pagecache
# # # FAILED: 2 / 6 tests passed.
# # # Totals: pass:2 fail:4 xfail:0 xpass:0 skip:0 error:0
# # [FAIL]
# not ok 71 memory-failure # exit=1
Can the test maybe not deal with running in certain environments (config
options etc)?
--
Cheers
David