macOS runner aborts in CGS_REQUIRE_INIT on the first synthesized event with Xcode 27.2 (XCTDisplayInterface → SLSGetDisplaysWithRect)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- macos, swift
- Ambito
- desktop-dev, testing
Direzione di ricerca
The fix belongs in dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift, where the reporter proposes a class-level setUp that touches NSApplication.shared under #if os(macOS). Start by reading the existing instance setUp there, then confirm the crash on a macOS machine with Xcode 27.2 by clicking an element in a target app. Done means a fresh runner synthesizes click, fill and scroll events without the CGS_REQUIRE_INIT assertion, and the change is checked against the other macOS runner paths.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
[!NOTE]
🤖 Opus 5.5 responding on behalf of Sam
Summary. With Xcode 27.2, the macOS runner aborts on the first event it synthesizes in a fresh runner process (a click, coordinate tap, fill or scroll):
Assertion failed: (did_initialize), function CGS_REQUIRE_INIT, file CGInitialization.c, line 44.
The CLI then reports Error (COMMAND_FAILED): fetch failed. snapshot -i and get text keep working. Connecting the runner process to the window server in RunnerTests' class setUp fixes it locally (patch below).
Environment
- agent-device 0.21.15,
--platform macos, target app Brave Browser (Chromium) - Xcode 27.2 (27B52);
xcodebuild -checkFirstLaunchStatusexits 0 - macOS 26.6.2 (25G83), Apple silicon
I haven't tried 0.21.35. The release notes for 0.21.16–0.21.35 don't mention this, and a code search of main found no NSApplication warm-up in the runner tests.
Repro
agent-device open "Brave Browser" --platform macosagent-device snapshot -iworks.agent-device click @eNon any element. runner.log:
Tap "<window title>" Window[0.00, 0.00] -> (452.0, 114.0)
Find the "<window title>" Window
Check for interrupting elements affecting "<window title>" Window
Synthesize event
Assertion failed: (did_initialize), function CGS_REQUIRE_INIT, file CGInitialization.c, line 44.
Crashed thread (AgentDeviceRunnerUITests-Runner crash report, EXC_CRASH SIGABRT):
libsystem_kernel.dylib __pthread_kill
libsystem_pthread.dylib pthread_kill
libsystem_c.dylib abort
libsystem_c.dylib __assert_rtn
SkyLight SLSGetDisplaysWithRect
SkyLight SLGetDisplaysWithRect
XCTAutomationSupport static XCTDisplayInterface.allDisplayIDs(containing:)
XCTAutomationSupport static XCTDisplayInterface.firstDisplayID(containing:)
XCTAutomationSupport -[XCElementSnapshot displayID]
XCUIAutomation +[XCUIElement(XCUIElementEventSynthesis) _dispatchEventWithEventBuilder:eventSynthesizer:…]
Observations
- A runner process started before Xcode 27.2 was installed kept pressing.
- Every runner started after the install crashed on its first synthesized event, with one exception: a run where a system dialog was on screen and XCTest's UI-interruption handling ran before the synthesis. So the crash seems to depend on whether anything has connected the runner process to the window server before the first event.
- Rebuilding the runner from an empty cache (
prepare ios-runner --platform macos) didn't change it. - Another project hit the same assert on Xcode 27 and fixed it the same way: https://github.com/perezstudio/axo-browser/pull/90 ("the UI test runner has no
NSApplication. A fresh runner whose first test starts with a key press crashed inCGS_REQUIRE_INIT, so each UI test class now connects it to the window server inclass setUp.")
Local patch
In dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift, after the instance setUp(). AppKit is already imported on macOS.
#if os(macOS)
override class func setUp() {
super.setUp()
MainActor.assumeIsolated { _ = NSApplication.shared }
}
#endif
After the rebuild (the runner cache key changed with the source), a click, a fill and a scroll on Brave all worked: 5 synthesized events, no assert. At startup the patched runner also logs a few [Connection] Unable to get synchronousRemoteObjectProxy and Unable to re-register with Process Instance Registry lines, which didn't affect any command.
The opt-in native macOS backend (ADR 0031) avoids XCTest altogether, but XCTest is still the default macOS backend. Would you consider adding this, or an equivalent window-server connection, to the macOS runner?
- Lingua principale
- TypeScript
- Stelle
- 5.2k
- Fork
- 359
- Merge medio
- 13h 31m
- PR unite (30g)
- 664
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di callstack/agent-device
-
iOS alert wait: the last poll can get ~30 ms and turns "no alert" into a failed readForse già presa @pcbeingused333 l’ha presa 2 giorni fa. Apertabug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
callstack/agent-device#4018 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
callstack/agent-device#1869 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 18/100
callstack/agent-device#4179 ·
I maintainer di solito rispondono entro 1 giorno
-
Daemon: refuse leased requests that name no session at request admissionForse già presa @airowe l’ha presa oggi. Apertabug ready-for-agent
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
callstack/agent-device#4171 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement needs-triage
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
callstack/agent-device#4162 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di callstack/agent-device
Issue simili
-
area: cli bug flake ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
gazetta-studio/gazetta-studio#1772 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
microsoft/playwright#43875 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
calagopus/panel#285 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno