Android: snapshot helper exits without parseable output after a screen transition (still on 0.21.33)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- android, react-native, typescript
Direzione di ricerca
Start by tracing the Android snapshot helper’s persistent session and one-shot am instrument fallback, then inspect how instrumentation output and failures become COMMAND_FAILED. Reproduce snapshots immediately after a screen transition on the Android 36 Google ATD emulator and capture the instrumentation exit status and result bundle. Done means the intermittent failure is understood and addressed, with a regression check for the transition case.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
On an Android emulator in CI, snapshot intermittently fails because the snapshot helper exits without returning parseable output. The client gets COMMAND_FAILED with details.androidSnapshotHelperFailureReason: "Android snapshot helper failed before returning parseable output". It reproduces on 0.21.28 and 0.21.33, so the vanished-child fix in #3901 (0.21.31) did not remove it for us.
Environment
- Emulator:
system-images;android-36;google_atd;x86_64(API 36, Google ATD), in CI - Driven through
@e2e-dev/mobile0.12.4 (persistent snapshot-helper session, then the one-shotam instrumentfallback) - App: React Native (Expo)
| Run | agent-device | Helper versionCode | Result |
|---|---|---|---|
| A | 0.21.28 | 21028 | helper exit after 629 ms |
| B | 0.21.28 | 21028 | session returned truncated XML → force-kill → one-shot fallback exits after 947 ms |
| C | 0.21.33 | 21033 | persistent session didn't answer → instrumentation fallback failed (1022 ms, then 602 ms) |
Frequency: an A/B over the same suite gave 1 failing run of 5 on 0.21.33 and 1 of 3 on 0.21.28.
Repro shape
In the 0.21.33 failure, the step was an assertion polling snapshots right after a screen transition (a peer mention opened from the notifications list). Failure is intermittent, and the request logs also show it on repeated snapshots.
Evidence excerpts
Run A, 0.21.28:
command=snapshot; helper version=0.21.28; versionCode=21028
android_snapshot_helper_capture durationMs=629: failed before returning parseable output
request_failed code=COMMAND_FAILED: Android snapshot helper failed: ...
Run B, 0.21.28:
android_snapshot_helper_session_stop: forceKilled=true
android_snapshot_helper_session_fallback: "Android snapshot helper session returned truncated XML"
android_snapshot_helper_capture durationMs=947: failed before returning parseable output
request_failed code=COMMAND_FAILED
Run C, 0.21.33 (two requests):
helper version=0.21.33; versionCode=21033
persistent-session answered=false; instrumentation fallback failed
capture durations: 1022 ms and 602 ms
reason: Android snapshot helper failed before returning parseable output
request_failed code=COMMAND_FAILED
Logcat:
- In run C, the Android automation logcat shows
Force stopping com.callstack.agentdevice.snapshothelper ...: start instr, then the process start andUiAutomation: Initialized. NoFATAL EXCEPTION,AndroidRuntimeorNullPointerExceptionline follows. - The
adb logcat -d -b crashdump taken after the suite is empty (run C; runs A/B predate that dump). - So the artifacts show the helper exiting, but not an in-process exception.
Asks
- Is there a helper-side log, or a flag such as
--debug, that would record why the instrumentation exited (exit code, instrumentation result bundle, aINSTRUMENTATION_ABORTED/shortMsg)? Our host only records "failed before returning parseable output". - Could the one-shot fallback be retried once by agent-device itself when the persistent session has just been force-killed? In our logs, both paths fail inside the same ~1 s window right after a transition.
Related: #3901 (vanished-child NPE, 0.21.31), #3929 (persistent helper frozen on ColorOS; a different symptom).
- Lingua principale
- TypeScript
- Stelle
- 5.2k
- Fork
- 359
- Merge medio
- 13h 32m
- PR unite (30g)
- 671
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
-
bug 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 43/100
callstack/agent-device#4110 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 57/100
callstack/agent-device#4109 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
callstack/agent-device#4107 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di callstack/agent-device
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
Slaymish/HealthAgent#7 ·
-
area: engine topic: math type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Get-Concord-AI/concord-mcp#310 ·
I maintainer di solito rispondono entro 1 giorno
-
Correct install_claude: 'marketplace add' over a different source is refused, not replaced in placeApertatype:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
nightgauge/nightgauge#2804 ·
I maintainer di solito rispondono entro 1 giorno