Conversation
On ARM64 macOS, qemu-system-x86_64 uses TCG (software emulation)
instead of KVM. The isa-debug-exit shutdown request is processed
asynchronously, so the guest vCPU can continue executing after the
first port write. This lets the fallthrough `exit_qemu(Failed)` in
`_start` overwrite the success exit code before QEMU actually shuts
down, causing intermittent test failures with exit code 35 instead
of 33.
Add `loop {}` after each `exit_qemu(Success)` in test runners so
the vCPU spins harmlessly until the shutdown completes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
On ARM64 macOS, qemu-system-x86_64 uses TCG (software emulation) instead of KVM. The isa-debug-exit shutdown request is processed asynchronously, so the guest vCPU can continue executing after the first port write. This lets the fallthrough
exit_qemu(Failed)in_startoverwrite the success exit code before QEMU actually shuts down, causing intermittent test failures with exit code 35 instead of 33.Add
loop {}after eachexit_qemu(Success)in test runners so the vCPU spins harmlessly until the shutdown completes.