Repository navigation
Fix: clear stale paused state in the loader host fixture - #1522
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The loader host fixture carries a synthetic stock PC from the stock-switch scenario into unrelated allocator cases: it stores
STOCK + 30atpaused + 20, so the real halfword scanner can also see0x101e0000at offset 22 and retain an unrelated extent when ASLR puts the truncated host pool there. This deterministically reproduces the first free-space failures and cascade seen in FRACT’s SDK run duringtest_volatile_service; the CI pool address itself was not logged.Clear the paused/register snapshots after the stock-switch scenario, before the allocator scenarios begin. Every existing assertion remains, including explicit module-pointer retention, unknown-task refusal and release after clearing the real test pointer; production loader code and native packages are unchanged.
Validation: both real host suites pass (
test_volatile_service.pyandtest_runtime_loader.py), with ASan/UBSan where their existing harness enables them. A controlled synthetic uncached alias to a 768 KiB host pool with low32 base0x101d0000reproduces the same first failures on the original fixture; the same mapping passes after only the snapshot reset, with the production loader byte-identical. Local fullpr:readysays Ready (163.12 s); pinned isolated Octatrack comparisons and all 64 current Elemod release exports also pass. Jev reviewed the changed fragment: 0 flags, 1 missing-context uncertainty investigated against callers/scenario order and the controlled reproduction, 0 deferred; the changelog is static-only, and this is not a complete file review.This is a separate host-test correction under the repository’s rule for test fixes, not a change to FRACT’s implementation or hardware evidence. Related to #1380.
Guides: nothing missing; existing guidance already warns about truncated host addresses and ASLR in loader fixtures.