Repository navigation
Correct native Windows FLS cleanup rearming and exit boundaries - #761
Merged
Merged
Conversation
gmh5225
marked this pull request as ready for review
October 10, 2026 04:14
This was referenced Oct 10, 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.
Native Windows originals exposed two FLS cleanup mismatches: explicit
FlsFreeretained the old slot value and discarded callback writes, while termination cleanup visited newly allocated higher slots. Clear before each explicit-free callback and repeat when it rearms the value; keep one continuation and the shared process budgets. The Windows services owner now retains the historical allocation bound and cursor for the exit sweep, preserving values during each exit callback and clearing them on completion.Independent fixtures cover 80 consecutive callbacks, nested cleanup, endless rearming under an event limit, zero-valued later slots, slot reuse, freed high indices, and values that must survive into DLL detach. Native stderr now includes failure-site bytes. The mandatory native inventory and all ten documentation translations are updated. The publication diff contains no temporary workflow or observation scripts.
Validation: exact-head Windows WHP 38020288691 passes all 5,056 mandatory names, independently checked against the source inventory and JUnit; 18,674 registered, 6,203 passed, 12,471 explicit skips, zero failures or unexecuted required tests. All four ancillary Windows/ARM64 checks pass. The rebased local build using the pinned LLVM r4 package passes the complete relevant suites: 1,418 registered, 661 passed, 757 explicit platform/backend skips, zero failures. CI configuration (73 tests), formatting and localized documentation checks pass.
Broader validation is now queued on the merged
devrevision: full CI and mobile CI. The original PR runs were cancelled by the repository’s PR-closure workflow and are not counted as passes. Initial Linux/macOS mobile jobs failed before compilation because a concurrent LLVM tag build replaced already-pinned release assets. The original six archive/checksum files have been restored from verified build artifacts, and the merged release-policy fix prevents automatic replacement on future tag pushes. The original failures remain recorded; all scoped validations above passed before this PR was merged.