镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

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
mack/fix-registry-filter-irqlfrom
mack/fix-chromium-audio-sandbox
Draft

eiz-claude wants to merge 5 commits into
mack/fix-registry-filter-irqlfrom
mack/fix-chromium-audio-sandbox

Conversation

@eiz-claude

@eiz-claude eiz-claude commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

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

  • With application routing on, the driver's registry filter points the MMDeviceEnumerator and ActivateAudioInterfaceWorker COM classes at SarAsio.dll for every process of the host's user.
  • Chromium's sandboxed audio service runs with the binary-signature mitigation set to Microsoft-signed only. Code Integrity refuses to load SarAsio.dll there (event 3033), so the audio classes can't be created and the browser has no output at all.
  • The filter stays registered until the driver unloads, so this lasts until reboot even after the DAW is closed.
  • It also explains why starting the browser before the DAW works (the class is already loaded), and why --disable-features=AudioServiceSandbox works.

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 browser scenario group, last in the default run:

  1. Register SarAsio's COM classes and start a host with application routing on.
  2. Play a 440 Hz Web Audio tone in Edge, launched un-elevated, with Edge's AudioSandboxEnabled policy off and then on.
  3. With the new SarTest meter command, require Edge's audio session to reach a peak of 0.01.
  4. Record the audio service's mitigations, whether SarAsio.dll is loaded in it, and Code Integrity events naming it.
test VM audio service Microsoft-signed only SarAsio.dll in it CI event 3033 Edge's peak
sandbox off, without the fix unsandboxed OFF yes none 0.500
sandbox on, without the fix audio sandbox ON no yes 0.000 (no session)
sandbox off, with the fix unsandboxed OFF yes none 0.500
sandbox on, with the fix audio sandbox ON no none 0.500

The 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.exe and Edge's setup.exe were running, and Edge's chrome_debug.log had one line. To prevent that, the scenario now:

  • turns Edge updates off by policy at the start of a run that includes the browser group;
  • waits for an Edge installer that's still running;
  • checks that Edge's audio service actually started, retrying the launch once and reporting an Edge that never started as error, not as silence.

Two later full runs passed with no waits.

🤖 Generated with Claude Code

eiz and others added 2 commits October 3, 2026 11:23
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
eiz-claude added this pull request to stack #154 October 3, 2026 16:28
@eiz-claude eiz-claude changed the title mack/fix chromium audio sandbox driver: don't redirect processes that only load Microsoft-signed images (#80, #102, #121, #127) Oct 3, 2026
eiz and others added 3 commits October 3, 2026 14:12
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants