馃Х test: Retain the Contention Lock Owner Through Garbage Collection - #283
Merged
Merged
Conversation
Contributor
Author
|
Head: Test-only fix for the Node 24 lock contention failure. Forces GC before an exact IPC readiness marker, retains the lock-owning wait, and preserves contention and crash-release assertions. Independent review and focused checks are running for this head. |
Contributor
Author
|
Independent review complete for |
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.
Summary
lockedIPC handshake. Capture bounded child stdout/stderr and exit status. Keep the competing-acquisition rejection and verify crash release afterSIGKILL.Cause
The old interval kept the process alive but did not retain the pending promise's resolver. Forced GC reproduced
Missing expected rejectionafter the exact stdout marker: Node closed the lock's FileHandle on GC while the owner remained alive. Descriptor inspection confirmed the lock fd disappeared. A timer-backed resolver preserved the descriptor under the same GC control.Readiness alone is not the fix. Replacing only the corrected wait with the original orphaned promise still fails the strengthened test with the same assertion and GC warning.
Verification
tsc --noEmit, build, touched-file Prettier, andgit diff --checkpass.worktrees.test.jsis blocked by the sandbox remapping/to uid 65534, rejected by storage ownership checks. No bypass or production change was applied.Follow-up to #282. GitHub denied its failed-lane retry with
403 Resource not accessible by integration; it has not been rerun. A passing retry on its unchanged head would not establish the root cause.