Skip to content

Fail gracefully on Android AVD lock errors during startup#187200

Merged
auto-submit[bot] merged 4 commits into
flutter:masterfrom
mboetger:resolve-issue-48894
Jun 15, 2026
Merged

Fail gracefully on Android AVD lock errors during startup#187200
auto-submit[bot] merged 4 commits into
flutter:masterfrom
mboetger:resolve-issue-48894

Conversation

@mboetger

Copy link
Copy Markdown
Contributor

Fail gracefully on Android AVD lock errors during startup.

Fixes: #48894

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • I followed the [breaking change policy] and added [Data Driven Fixes] where supported.
  • All existing and new tests are passing.

mboetger added 2 commits May 14, 2026 22:14
…cific path

Refactored AndroidEmulator launch logic to stream-parse stderr for the locked AVD error signature, avoiding potential timing and completer hangs.

Modified the error message to be highly actionable, displaying the absolute path of the resolved AVD directory and explaining the common reasons (already running instance or crashed process).

Prevented a resource leak where cancelling subscriptions caused asFuture to hang indefinitely by checking if the streams were cancelled in the exitCode handler.

Updated unit tests to cover AVD lock errors with and without the AVD directory path.

TAG=agy
CONV=cca9beec-7358-4f45-a1e7-629084ec6800
@mboetger mboetger requested a review from a team as a code owner May 27, 2026 20:31
@mboetger mboetger requested review from jesswrd and removed request for a team May 27, 2026 20:31
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 27, 2026
@github-actions github-actions Bot added tool Affects the "flutter" command-line tool. See also t: labels. team-android Owned by Android platform team labels May 27, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the Android emulator launcher to detect AVD lock errors during startup and throw a ToolExit with a descriptive error message, supported by new unit tests. The review feedback identifies a critical issue where cancelling the stream subscriptions early prevents the stdioFuture from completing, which can cause the process to hang indefinitely. The reviewer suggests tracking the error state with a flag instead of cancelling the streams, and handling this flag safely in the exit handlers.

Comment thread packages/flutter_tools/lib/src/android/android_emulator.dart
Comment thread packages/flutter_tools/lib/src/android/android_emulator.dart Outdated
Comment thread packages/flutter_tools/lib/src/android/android_emulator.dart
- Replace the eager stream cancellations on AVD lock detection with tracking a boolean flag hasAvdLockError.
- Leaving streams open until process exit allows stdioFuture to resolve cleanly, averting an infinite hang in the exit handler.
- Add defensive checks for hasAvdLockError before and after draining the streams to return cleanly without duplicate logging.

TAG=agy
CONV=d492ea8e-4d8e-443f-b7c7-76f68efb5fc4
@github-actions github-actions Bot removed the CICD Run CI/CD label May 29, 2026
@jesswrd jesswrd added the CICD Run CI/CD label Jun 9, 2026
@mboetger mboetger added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
@auto-submit

auto-submit Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187200, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR.

@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 12, 2026
@mboetger mboetger added autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD labels Jun 12, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue Jun 12, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to no response for status checks Jun 13, 2026
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 13, 2026
@mboetger mboetger added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 15, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue Jun 15, 2026
Merged via the queue into flutter:master with commit 6469c0f Jun 15, 2026
171 of 172 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 15, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Jun 16, 2026
flutter/flutter@5827d5f...3a0420c

2026-06-16 Rusino@users.noreply.github.com Implement font fallback (flutter/flutter#187520)
2026-06-16 amhurtado@protonmail.com Add FlatBuffers Verifier checks to Impeller asset loading (flutter/flutter#187878)
2026-06-16 engine-flutter-autoroll@skia.org Roll Packages from aa964a3 to 8286d39 (1 revision) (flutter/flutter#188067)
2026-06-16 engine-flutter-autoroll@skia.org Roll Skia from 9c2b83788409 to d7196b0b4939 (1 revision) (flutter/flutter#188066)
2026-06-16 engine-flutter-autoroll@skia.org Roll Skia from ef17057bb776 to 9c2b83788409 (1 revision) (flutter/flutter#188061)
2026-06-16 engine-flutter-autoroll@skia.org Roll Skia from 500025456bb5 to ef17057bb776 (1 revision) (flutter/flutter#188058)
2026-06-16 engine-flutter-autoroll@skia.org Roll Skia from cb1035ff14bf to 500025456bb5 (5 revisions) (flutter/flutter#188057)
2026-06-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from TbB86Po_HDe1dvXvT... to VeLhhlDcod09NR4Hb... (flutter/flutter#188055)
2026-06-16 engine-flutter-autoroll@skia.org Roll Skia from 70acf6a5e7c9 to cb1035ff14bf (3 revisions) (flutter/flutter#188054)
2026-06-16 41930132+hellohuanlin@users.noreply.github.com [pv]skip non-tappable web view workaround on ios 26.4 (flutter/flutter#185424)
2026-06-16 mdebbar@google.com [web] RenderParagraph needs paint after a DPR change (flutter/flutter#186968)
2026-06-16 30870216+gaaclarke@users.noreply.github.com Adds gamma correction to windows text. (flutter/flutter#187871)
2026-06-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Add a platform view test to android_hardware_smoke_test (#187913)" (flutter/flutter#188051)
2026-06-15 awolff@google.com Add a platform view test to android_hardware_smoke_test (flutter/flutter#187913)
2026-06-15 codefu@google.com feat: linux_analyze in a workflow (flutter/flutter#187889)
2026-06-15 mdebbar@google.com [web] Changes to WebParagraph configuration (flutter/flutter#187188)
2026-06-15 matt.boetger@gmail.com Fail gracefully on Android AVD lock errors during startup (flutter/flutter#187200)
2026-06-15 bkonyi@google.com [flutter_tools] Fix flakiness in widget_preview_detection_test (flutter/flutter#187938)
2026-06-15 jason-simmons@users.noreply.github.com Exclude fuchsia-sdk/sdk/.build-id from the builder cache archive (flutter/flutter#187826)
2026-06-15 engine-flutter-autoroll@skia.org Roll Skia from c8d9f80f13e4 to 70acf6a5e7c9 (4 revisions) (flutter/flutter#188020)
2026-06-15 engine-flutter-autoroll@skia.org Roll Packages from b78ad83 to aa964a3 (7 revisions) (flutter/flutter#188021)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
@mboetger mboetger added the l:backlog LLM created PR addressing a backlog issue. label Jun 18, 2026
via-guy pushed a commit to via-guy/flutter that referenced this pull request Jun 26, 2026
…7200)

Fail gracefully on Android AVD lock errors during startup.

Fixes: flutter#48894

## Pre-launch Checklist

- [X] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [X] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [X] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [X] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [X] I signed the [CLA].
- [X] I listed at least one issue that this PR fixes in the description
above.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [X] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [X] All existing and new tests are passing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD l:backlog LLM created PR addressing a backlog issue. team-android Owned by Android platform team tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ERROR: Running multiple emulators with the same AVD is an experimental feature.

2 participants