macOS runner aborts in CGS_REQUIRE_INIT on the first synthesized event with Xcode 27.2 (XCTDisplayInterface → SLSGetDisplaysWithRect)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- Medio día
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- macos, swift
- Área
- desktop-dev, testing
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
[!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?
- Lenguaje dominante
- TypeScript
- Estrellas
- 5.2k
- Forks
- 359
- Merge medio
- 13 h 23 min
- PR fusionados (30 d)
- 655
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de callstack/agent-device
-
iOS alert wait: the last poll can get ~30 ms and turns "no alert" into a failed readPosiblemente ocupada @pcbeingused333 la tomó hace 3 días. Abiertobug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
callstack/agent-device#4018 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
callstack/agent-device#1869 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 18/100
callstack/agent-device#4179 ·
Los mantenedores suelen responder en 1 día
-
Daemon: refuse leased requests that name no session at request admissionPosiblemente ocupada @airowe la tomó hoy. Abiertobug ready-for-agent
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
callstack/agent-device#4171 ·
Los mantenedores suelen responder en 1 día
-
enhancement needs-triage
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
callstack/agent-device#4162 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de callstack/agent-device
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
pingdotgg/t3code#30228 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
ci-cd desktop size:low telemetry-improvement telemetry-round-1
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
vfarcic/dot-agent-deck#2079 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Broken links in the docsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día