Skip to content

Fix ARM64 user stack frame mapping#404

Open
ryanbreen wants to merge 1 commit into
mainfrom
fix/aarch64-user-stack-frame-aliasing
Open

Fix ARM64 user stack frame mapping#404
ryanbreen wants to merge 1 commit into
mainfrom
fix/aarch64-user-stack-frame-aliasing

Conversation

@ryanbreen
Copy link
Copy Markdown
Owner

Summary

  • track actual ARM64 user-stack physical frames in GuardedStack
  • map each user stack page to its real allocated frame instead of assuming a contiguous physical range
  • keep a cold-path serial assertion when stack allocation returns non-contiguous frames

Validation

  • cargo build --release --features testing,external_test_bins --bin qemu-uefi (zero warnings/errors)
  • BREENIX_WAIT_STRESS=1 ./run.sh --parallels --test 90 under fresh Parallels VMs:
    • turn112-artifacts/stress-visible-1/serial.log: non-contiguous assertion fired; WAIT_STRESS_PASS; no DATA_ABORT/SOFT LOCKUP/FATAL/PANIC
    • turn112-artifacts/stress-visible-2/serial.log: non-contiguous assertion fired; WAIT_STRESS_PASS; no DATA_ABORT/SOFT LOCKUP/FATAL/PANIC
    • turn112-artifacts/stress-visible-3/serial.log: non-contiguous assertion fired; wait_stress reached sample 600 then serial line tore at PASS; heartbeat continued; no DATA_ABORT/SOFT LOCKUP/FATAL/PANIC

Track the actual frames allocated for ARM64 user stacks and map those exact frames into process page tables instead of assuming physical contiguity. Keep a cold-path serial assertion for non-contiguous stack frame allocations.

Co-authored-by: Ryan Breen <ryan@breen.com>

Co-authored-by: Claude Code <noreply@anthropic.com>
ryanbreen added a commit that referenced this pull request Jun 1, 2026
docs: refresh roadmap to current state (session merges + #404 held)
ryanbreen added a commit that referenced this pull request Jun 1, 2026
 TTBR0 status

Operator hit a full-VM lockup launching the terminal via launcher->picker->terminal. Folded into the active #404 fresh-process spawn-dispatch root-cause as the primary real-world repro (leading hypothesis: same wrong-page-table-root-on-fresh-child class). Fix forward, no bisect. Committed via plumbing off origin/main so the running Codex executor working tree is untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ryanbreen added a commit that referenced this pull request Jun 1, 2026
 TTBR0 status (#409)

Operator hit a full-VM lockup launching the terminal via launcher->picker->terminal. Folded into the active #404 fresh-process spawn-dispatch root-cause as the primary real-world repro (leading hypothesis: same wrong-page-table-root-on-fresh-child class). Fix forward, no bisect. Committed via plumbing off origin/main so the running Codex executor working tree is untouched.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant