fix(test-isolation): the stream constructor tests read a side table the GC guards clear - #7671
Merged
Merged
Conversation
added 2 commits
August 9, 2026 02:31
…he GC side-table reset CLOSURE_PROPS is process-global and test_clear_closure_side_tables clears it from parallel test threads, so a static method value read here came back TAG_UNDEFINED. 0/16 on main, 1/12 on #7664's branch, 0/20 after. Claude-Session: https://claude.ai/code/session_01Y1QZ5wUP9gRSwpiweT4Wix
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThe PR serializes closure side-table access in two stream tests, documents the test-isolation race, and updates the workspace and documented versions to ChangesStream test isolation and release version
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested labels: ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 9, 2026
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.
fix(test-isolation): the stream constructor tests read a side table the GC guards clear.stream_constructors_expose_static_method_valuesasserts a static method value is notTAG_UNDEFINED, and intermittently it was —assertion left != right failed, left: 9222246136947933185, right: 9222246136947933185, i.e. both sides0x7FFC_0000_0000_0001.CLOSURE_PROPSis a process-globalMutex<HashMap<usize, HashMap<String, f64>>>keyed by closure address, and the GC test guards' state reset (test_clear_closure_side_tables) clears it from whatever thread runs them.gc/tests/support.rsdocuments this in its own comment, and three tests inclosure/dynamic_props.rsalready takecrate::gc::global_side_table_test_lock()for exactly this reason. The twonative_module_streamtests did not.0/16 on
main, 1/12 on #7664's branch — the third time in two days that a branch has exposed a pre-existing global-sink race by changing the parallel schedule rather than introducing one (#7665 fixed the other two:opt_reportandext_registry). Verified 0/20 after.The class is wider than this fix. A survey of files that read closure dynamic props in tests:
closure/dynamic_props.rsobject/global_this_webassembly.rsarray/tests.rs(65),node_stream_tests.rs(42),node_submodules/tests.rs(33),object/instanceof.rs(5),value/to_string.rs(4),object/native_module/constants.rs(4), and ~14 moreBlanket-locking several hundred tests would serialise a large part of the suite for a hazard that only bites a test reading a persisted prop across a window, so this change fixes the observed instance and the exposure is filed with the survey rather than guessed at.
Summary by CodeRabbit
Bug Fixes
undefined.Documentation
Chores