Skip to content

fix(linux): stop announcing an AT-SPI listener on permission probes - #635

Open
princejain756 wants to merge 1 commit into
vercel-labs:mainfrom
princejain756:fix/linux-a11y-probe-no-listener
Open

princejain756 wants to merge 1 commit into
vercel-labs:mainfrom
princejain756:fix/linux-a11y-probe-no-listener

Conversation

@princejain756

Copy link
Copy Markdown

Every command that requires a permission report, including a plain XTEST press that never reads the accessibility tree, opened the shared AT-SPI connection and registered window:activate as an event listener before the process exited a moment later. Chromium-family bridges deliver events only to registered listeners, and Chrome's bridge segfaults writing to a client that disconnects mid-event, so agent-desktop --headed press ctrl+v crashed Chrome 3/3 while the identical xdotool key sequence crashed it 0/3.

The fix adds SharedBus::probe: it reuses a live announced connection when one exists, and otherwise opens a transient connection that skips RegisterEvent and is not cached. permissions::report and accessibility_answers switch to it, so a permission check never appears to an application as an assistive client.

Verified on Linux/Xvfb + dbus-run-session + Chrome for Testing 156: the issue's own repro script crashed Chrome on every agent-desktop press trial before the patch and survived 5/5 full key sequences after it. cargo test --bin agent-desktop passes 229 tests, cargo clippy ... -- -D warnings is clean on the four host packages, and cargo fmt --check passes on the pinned 1.89.0 toolchain.

Fixes #529

Every command that requires a permission report, including a plain
XTEST press that never touches the accessibility tree, opened the
shared AT-SPI connection and registered 'window:activate' before the
process exited a moment later. Chromium-family applications deliver
accessibility events only to registered listeners, and their
accessibility bridge can segfault while writing to a client that
disconnects mid-event, so a permission probe was enough to crash
Chrome 156 on Ubuntu 24.04 while keys identical through xdotool left
it running.

SharedBus gains probe(): it reuses a live announced connection when
one exists, and otherwise opens a transient connection that skips
RegisterEvent and is not cached, so commands that only check
permissions never appear to an application as an assistive client.
permissions::report and accessibility_answers switch to it.

Closes vercel-labs#529
@vercel

vercel Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

@princejain756 is attempting to deploy a commit to the Vercel Labs Team on Vercel.

A member of the Team first needs to authorize it.

This branch has not been deployed

No deployments
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.

[Bug]: Linux X11: press into Chrome's address bar crashes Chrome (SIGSEGV); identical keys via xdotool don't

1 participant