Repository navigation
driver: don't redirect processes that only load Microsoft-signed images (#80, #102, #121, #127) - #156
Draft
eiz-claude wants to merge 5 commits into
Draft
eiz-claude wants to merge 5 commits into
eiz-claude wants to merge 5 commits into
Conversation
Adds a browser scenario group, last in the default run: with SarAsio's COM classes registered and a host running with application routing on, play a Web Audio tone in Edge with its audio sandbox off and then on, and fail unless Edge's audio session reaches a peak of 0.01. It also records the sandboxed audio service's mitigation policies, whether SarAsio.dll was loaded into any Edge process, and Code Integrity events that name it. Skipped when Edge isn't installed. SarTest gains a meter command that samples every audio session on the active playback endpoints. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With application routing on, the registry filter points the audio device enumerator and ActivateAudioInterfaceWorker classes at SarAsio.dll for every process of the host's user. Chromium's sandboxed audio service (Chrome, Edge, Discord and other Electron apps) runs with the binary signature mitigation set to Microsoft-signed only, so Code Integrity refused to load SarAsio.dll there (event 3033), the classes couldn't be created, and the browser played nothing. Because the filter stays registered until the driver unloads, that lasted until a reboot, not just while the DAW ran. Skip the redirection for processes whose signature policy allows only Microsoft, Store or WHQL-signed images. They get the system's classes and play to the default device; application routing can't reach them, since no SAR DLL can load there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eiz-claude
added this pull request to stack #154
October 3, 2026 16:28
In one of eight full runs Edge never came up for the sandboxed scenario: no Edge process at all, so the meter reported silence. Wait for Edge's audio service to appear, retry the launch once, and report an Edge that never started as an error rather than as no audio. The launch task now allows parallel instances and is stopped before it is unregistered, in case a leftover instance made the scheduler ignore the new start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Edge's audio service failed to appear twice, late in full runs, with Edge itself running. Log with --enable-logging, and when that happens record Edge's version, the Edge and Edge-updater processes with their command lines, and copy Edge's chrome_debug.log into the results. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The browser scenarios' Edge launch failures were Edge updating itself: some minutes after boot the Edge updater ran, an Edge started then exited without playing, and only MicrosoftEdgeUpdate.exe and Edge's setup.exe were running. When the browser scenarios are selected, turn Edge updates off by policy at the start of the run, before the updater's first check. The scenario also waits (up to two minutes) for an Edge installer still running, recording how long it waited and what it waited for. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Chrome, Edge, Discord and other Chromium/Electron apps go silent once a DAW has started SAR with per-app routing on, until reboot. This is the cluster in #80, #102, #121 and #127. Not closing those issues automatically: the fix is verified with Edge on the test VM, not with each reporter's app.
Cause, confirmed on the test VM
MMDeviceEnumeratorandActivateAudioInterfaceWorkerCOM classes atSarAsio.dllfor every process of the host's user.SarAsio.dllthere (event 3033), so the audio classes can't be created and the browser has no output at all.--disable-features=AudioServiceSandboxworks.The fix skips the redirection for processes whose signature policy allows only Microsoft-, Store- or WHQL-signed images. The driver reads it with
ZwQueryInformationProcess(ProcessMitigationPolicy)from the registry callback, which runs in the calling process. Those processes get the system's classes and play to the default device. Per-app routing can't reach them, since no SAR DLL can load inside that sandbox.Test
New
browserscenario group, last in the default run:AudioSandboxEnabledpolicy off and then on.SarTest metercommand, require Edge's audio session to reach a peak of 0.01.SarAsio.dllis loaded in it, and Code Integrity events naming it.audiosandboxaudiosandboxThe runs without this fix also include #155, the PR below this one. Before that fix, turning routing on bugchecked the VM.
Making the Edge scenario reliable
Edge failed to start in 3 of about 12 full-suite runs. Diagnostics showed Edge was updating itself: only
MicrosoftEdgeUpdate.exeand Edge'ssetup.exewere running, and Edge'schrome_debug.loghad one line. To prevent that, the scenario now:error, not as silence.Two later full runs passed with no waits.
🤖 Generated with Claude Code