Skip to content

DAOS-19721 vos: add unit test reproducing scrubber UAF assert - #19205

Closed
grom72 wants to merge 9 commits into
masterfrom
grom72/DAOS-19721
Closed

grom72 wants to merge 9 commits into
masterfrom
grom72/DAOS-19721

Conversation

@grom72

@grom72 grom72 commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Add CSUM_SCRUBBING_15 to reproduce the checksum-scrubber race when aggregation and GC delete an object during yielding.
The iterator fix is intentionally out of scope and will be delivered in a separate PR. See: #19182.

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

When the scrubber yields mid-extent, the object or key it is scanning
may be punched and aggregated away. vos_iter_validate_internal()
re-probes parents with GE semantics, so it silently lands on the next
entry and child iterators then probe freed tree roots, triggering
"Embedded root is incompatible with integer keys" in btr_probe_embedded.

- Restart from the object level if the held object was evicted.
- Treat an OBJ/DKEY/AKEY re-probe that lands on a different entry as
  "entry gone".
- Use ia_ev (not ia_sv) as the RECX anchor so corruption is marked on
  the correct extent.

Signed-off-by: Mohamad Chaarawi <mohamad.chaarawi@hpe.com>
@github-actions

github-actions Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Ticket title is 'btr_probe_embedded() Assertion '!btr_is_int_key(tcx)' failed: Embedded root is incompatible with integer keys '
Status is 'In Review'
Labels: '2.8.1rc2'
https://daosio.atlassian.net/browse/DAOS-19721

@daosbuild3

Copy link
Copy Markdown
Collaborator

@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from 4356175 to 0cfb094 Compare October 6, 2026 15:27
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/4/testReport/

@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from 0cfb094 to bddc4f7 Compare October 6, 2026 18:11
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional on EL 9 with Valgrind completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-19205/4/execution/node/1119/log

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/5/testReport/

@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from f127f3b to d3a0a57 Compare October 6, 2026 19:08
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/7/testReport/

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional on Leap 15 completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/4/testReport/

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional on SLES 15 completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/4/testReport/

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional on EL 9 with Valgrind completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-19205/5/execution/node/1167/log

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/8/testReport/

@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from a29569a to 9543aa7 Compare October 7, 2026 15:23
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/9/testReport/

@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from 9543aa7 to 1cec1da Compare October 12, 2026 15:20
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/10/testReport/

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/11/testReport/

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/12/testReport/

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@grom72
grom72 requested a review from janekmi October 22, 2026 08:06

@janekmi janekmi left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additionally, this comment is still not resolved:

Comment thread src/vos/tests/pool_scrubbing_tests.c Outdated
Comment thread src/vos/tests/pool_scrubbing_tests.c Outdated
@grom72
grom72 requested a review from janekmi October 22, 2026 08:52
Comment thread src/vos/tests/pool_scrubbing_tests.c Outdated
@grom72
grom72 requested a review from janekmi October 22, 2026 14:31
Comment thread src/vos/tests/pool_scrubbing_tests.c Outdated
Comment thread src/vos/tests/pool_scrubbing_tests.c Outdated
Comment thread src/vos/tests/pool_scrubbing_tests.c Outdated
Comment thread src/vos/vos_pool_scrub.c Outdated
Comment thread ci/codespell.ignores Outdated
Comment thread src/vos/tests/pool_scrubbing_tests.c Outdated
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/37/testReport/

@grom72
grom72 requested a review from janekmi October 22, 2026 16:20
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium Provider MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-19205/35/execution/node/1621/log

@daosbuild3

Copy link
Copy Markdown
Collaborator

janekmi
janekmi previously approved these changes Oct 22, 2026
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/39/testReport/

@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from 88c1cb7 to d5c0a32 Compare October 22, 2026 20:36
@daosbuild3

Copy link
Copy Markdown
Collaborator

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from d5c0a32 to e0e0cdc Compare October 22, 2026 21:11
Add an injectable scheduler-sequence callback to standalone VOS TLS and
build the scrubber test with VOS_STANDALONE.

Add CSUM_SCRUBBING_15 test to delete and aggregate the current object during
a yield between checksum chunks, then run GC before iteration resumes.
Poison freed PMEM allocations through DAOS fault injection to expose
use-after-free, and verify the scrubber skips the deleted object and
continues processing later objects.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Include the affected OID in checksum corruption logs and the RAS event to
make it easier to identify the corrupted object.

skip-nlt: true
skip-test: true
skip-test-hardware: true
Test-tag: pr,-unittest

Priority: 2

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
@grom72
grom72 force-pushed the grom72/DAOS-19721 branch from e0e0cdc to dd8ef79 Compare October 22, 2026 21:16
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-19205/43/testReport/

@grom72

grom72 commented Oct 23, 2026

Copy link
Copy Markdown
Contributor Author

Merged into #19182

@grom72 grom72 closed this Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants