Repository navigation
runtime: preserve coalesced events in retained native poll - #297
Merged
Merged
Conversation
Select all 32 Timer/Ticker pairs away from native page starts, retaining all 128 weak-reference checks and the five-second manager-retirement deadline. Add retained-Timer and extra-G negative controls. The collector mapping-hint false root is a documented collection boundary; production runtime code is unchanged.
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.
A native program can abort while importing retained poll readiness if another producer has already published readiness or closing for the same operation. The unchanged old
net/http/httptestimage reproduces SIGABRT; failure-only debugger captures showPollOperationPostDuplicate(2)rejected by the native wait adapter before the strict entry validator reports Invalid.Accept the existing coalesced result and return to the reducer, preserving the first mailbox result. Invalid, stale and retired operations remain rejected. The native entry validator, protocol and G/P/ABI layouts are unchanged.
Validation:
Host follow-up 1613848 updates two source-layout assertions after extraction of the import helper. CI follow-up 1020ee0 runs all four archive consumers in fresh processes under the unchanged 6 GiB virtual cap, 2 GiB Go soft target and 12m/11m limits. All four pass; the original cumulative BoundLarge OOM and failed images remain retained.
CI 39105987770 at 1020ee0 finishes 19 jobs passing and one genuine timer-fixture failure. Failure-only captures and a collector mark watch identify libgc's static mmap endpoint hint
GC_unix_mmap_get_mem::last_addrconservatively marking a public Timer at an adjacent page start, which then retains its channel. The exact untraced image also reproduces locally on run 4203. Five matched no-write debugger controls fail at the original five-second assertion; clearing only that allocator hint lets five matched runs pass in about 90ms. Diagnostic runs: failure capture, mark source, causal controls.Test-only follow-up 6fcca26 selects the same 32 Timer/Ticker pairs away from that native page-boundary false root and stops rejected guard pairs. All 128 selected weak-reference checks, the five-second deadline, and full manager retirement assertions remain identical. Added retained-Timer and extra-G negative controls independently exercise both failure assertions. Native Linux validation passes P=1x100 and P=2x1000; both controls produce their exact expected panic at five seconds. This corrects the fixture's collector assumption; conservative GC false roots and lack of a general prompt-weak-collection guarantee remain explicit boundaries. It does not change production GC or timer ownership.
PR merged into
cpunion/llgo:llvm-coroas 603c781 after exact-head CI 39111825084 passes 20/20, local native/WASI suites pass all three timer fixtures each (including both native negative controls), and fresh reviews/inline comments/issue comments/review threads are empty. The merged file tree matches the tested head.The new 1082-case GOROOT campaign, 73 executable demos, 180 stdlib packages and refreshed performance/size measurements remain separate overall-acceptance work. Historical R6 results are not counted as runs of this production fix.