feat(asyncify): cumulative collision counters — fcsTotal + rootHotTotal in the STATE dump
The 96-event recorder ring holds under a second of history at idle tick rate (~110Hz), so settle-time collision pressure scrolls out before any poll can read it — the prod dumps only caught the kill because the trap froze the moment. Scroll-proof totals since boot: every finishContextSwitch increments fcsTotal; every root entry inside a sleep-wake window increments rootHotTotal (the fatal precondition). Both appear in the [wx-asyncify] STATE line, i.e. in every trap auto-dump, every __wxAsyncifyDump() call, and every blue-screen console — turning ANY prod load (crashing or clean) into a dose measurement for the differential-repro experiment (which project ingredient generates collision windows: siblings, 3D models, libs). .ci-cache-epoch 7→8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019SE4o46Lnq3hF574FFq8x4
This commit is contained in:
parent
3ac24e85d2
commit
00b80a923f
2 changed files with 9 additions and 1 deletions
|
|
@ -1 +1 @@
|
|||
7
|
||||
8
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@ if (typeof Asyncify !== "undefined") {
|
|||
+ (F ? (" nextFiber=" + F.nextFiber
|
||||
+ " trampolining=" + F.trampolineRunning
|
||||
+ " root=" + F.__rootFiber
|
||||
+ " fcsTotal=" + (F.__fcsTotal || 0)
|
||||
+ " rootHotTotal=" + (F.__rootHotTotal || 0)
|
||||
+ " valid=[" + (F.__validSuspensions ? Array.from(F.__validSuspensions).join(",") : "") + "]"
|
||||
+ " parked=[" + (F.__internallyParked ? Array.from(F.__internallyParked).join(",") : "") + "]"
|
||||
+ " deferrals=" + (F.__rootDeferrals || 0))
|
||||
|
|
@ -286,6 +288,12 @@ if (typeof Fibers !== "undefined"
|
|||
: function() {};
|
||||
|
||||
Fibers.finishContextSwitch = function(newFiber) {
|
||||
// Cumulative, scroll-proof counters (the 96-event ring holds <1s at idle
|
||||
// tick rate — differential-repro dose measurements need totals).
|
||||
Fibers.__fcsTotal = (Fibers.__fcsTotal || 0) + 1;
|
||||
if (newFiber === Fibers.__rootFiber && (Asyncify.__inSleepWake || 0) > 0) {
|
||||
Fibers.__rootHotTotal = (Fibers.__rootHotTotal || 0) + 1;
|
||||
}
|
||||
__fcsRec("fcs old=" + (Asyncify.currData ? Asyncify.currData - 20 : 0)
|
||||
+ " new=" + newFiber
|
||||
+ (newFiber === Fibers.__rootFiber ? " ROOT" : "")
|
||||
|
|
|
|||
Loading…
Reference in a new issue