Repository navigation
test: let the endpoint builder settle after the race, and watch it - #157
Draft
eiz-claude wants to merge 1 commit into
Draft
eiz-claude wants to merge 1 commit into
eiz-claude wants to merge 1 commit into
Conversation
recovery-after-kill failed on every build once the race ran right before it (6 of 6 runs with 16 pairs). The race restarts the host ten times in about 35 s, and each restart disables and re-enables 32 endpoints' worth of KS interfaces, more than Windows' audio endpoint builder can process as it happens. It keeps working through that for about 15 s after the race (12 s of its CPU), tearing down and rebuilding SAR endpoints one at a time while their interfaces stay enabled. kill-host started 0.5 s after the race, so the backlog ran into recovery, whose streams stalled in Activate (the 4 s GetDeviceInterfacePath2 retry) and Initialize (serialized behind it, up to 20 s) or were invalidated. Wait for the endpoint builder to go idle after the race (under 100 ms of CPU per second for three seconds, at most two minutes) and record how long that took as settle-after-race. With the wait, recovery passes; kill and recovery without a race before them never showed the problem. SarTest watch, which found this, runs from before the race through recovery: it logs every change in which SAR KS interfaces are enabled, every endpoint state change MMDevAPI reports, seconds in which the endpoint builder or audio service used 50 ms of CPU or more, and with --probe, each change in whether the SAR filters can be opened. Invoke-SarTest also takes -PostRaceDelaySeconds for extra idle time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eiz-claude
force-pushed
the
mack/test-settle-after-race
branch
from
October 3, 2026 20:19
990828a to
c510611
Compare
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.
Fixes the rig's
recovery-after-killfailures, which had become constant. It failed on every build once the race ran right before it: 6 of 6 runs at 16 pairs, on both old and new code.What was happening
New
SarTest watchtimelines and CPU sampling showed:notpresentand thenactive0.3–1 s later, while its interfaces stay enabled.Activate, which hit the 4 sGetDeviceInterfacePath2retry seen in the September traces, and inInitialize, serialized behind it for up to 20 s. Others were invalidated or got only silence.Change
settle-after-race: after the race, wait until the endpoint builder is idle (under 100 ms of its CPU per second for three seconds in a row, up to two minutes) and record how long that took. Recovery then measures recovery from a killed host. The wait time is a metric for how much the race costs Windows, and a builder still busy after two minutes fails the scenario.SarTest watch: runs from before the race through recovery and writeswatch.logandwatch.json. It records:--probe, each change in whether the SAR filters can be opened.-PostRaceDelaySeconds: optional extra idle time after the race, for experiments.Results on the test VM
Stream invalidations remain on this branch alone (82–116 in the 16-pair loopback run). Those come from SarAsio's format-change broadcast, which the next PR removes.
🤖 Generated with Claude Code