fix(macos): resolve #283 guest exclusions with hosted-Mac evidence - #348
Merged
Merged
Conversation
Hosted Intel and Apple Silicon runners pass every test the Recovery guest excluded as a macOS finding (exact-SHA run 36067778414), so what remains excluded is guest-only: - cap-primitives st_rdev panic: the guest reports negative device numbers; wait for sunfishcode/cap-std#428 rather than [patch]. - ENOTSUP from the guest filesystem's atomic renames, now also covering install_directory's RENAME_SWAP (documented to return the fs error). - one two-core timing window. Re-enabled in the guest: the PTY restore and owner-bound child tests (fixed in #347) and the containment-state test, which passes there now. owned_group_termination_reaches_the_grandchild failed intermittently in the guest because Child::wait closes stdin first, letting the root read EOF and exit 0 before the SIGKILL landed. Hold stdin across a bounded wait and assert the root died by SIGKILL. Co-Authored-By: Claude Opus 5.5 <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.
Closes #283.
Evidence
The exact-SHA full CI run 36067778414 (the #346 candidate) ran the test suite on hosted
macos-15-intelandmacos-15with no macOS exclusions. Every test the Recovery guest excluded as a macOS finding passed there: all 12cap-primitivestests, both readiness-marker renames,install_directory_replaces_an_existing_tree_and_removes_the_old_one, andreal_worker_sequential_stress_leaves_no_parent_state. That answers the two open #283 items:st_rdevshows up only in the guest. Decision: report and wait on Handle a negative st_rdev like st_dev sunfishcode/cap-std#428. A[patch.crates-io]fork would not reach kernal-api's consumers.ENOTSUPcomes from the guest.Changes
install_directory_replaces_…joins the guest rename group. ItsRENAME_SWAPreturnsENOTSUPin the guest, whichinstall_directorydocuments.owned_group_termination_reaches_the_grandchild: this failed intermittently in the guest becauseChild::waitcloses stdin first. The root could then read EOF and exit 0 before the SIGKILL landed. The test now holds stdin open, waits up to 10s, and asserts the root died by SIGKILL.ci/test_macos_x64_guest.pygroup and count checks.Verification
python -m unittest ci.test_macos_x64_guestpasses, and the Linuxprocess_host_controltests pass 3/3 runs.🤖 Generated with Claude Code