Skip to content

Listen to log reader before VM Service and make delay configurable - #187202

Merged
auto-submit[bot] merged 9 commits into
flutter:masterfrom
mboetger:resolve-issue-162087
Jul 23, 2026
Merged

auto-submit[bot] merged 9 commits into
flutter:masterfrom
mboetger:resolve-issue-162087

Conversation

@mboetger

Copy link
Copy Markdown
Contributor
  • Listen to device log reader before VM Service connection in both flutter drive and flutter run (Resident Runner) to ensure logs are captured even if startup fails.
  • Wrap VM Service connection in a try-catch and apply a configurable log flush delay (default 500ms) to allow buffered logs to arrive before rethrowing.
  • Make the delay configurable (logFlushDelay) in FlutterDriverService and FlutterDevice, defaulting to Duration.zero in tests to keep them fast.
  • Add tests in resident_runner_test.dart and update drive_service_test.dart to verify the behavior.

Fixes: #162087

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.

…elay configurable

- Listen to device log reader before VM Service connection in both `flutter drive` and `flutter run` (Resident Runner) to ensure logs are captured even if startup fails.
- Wrap VM Service connection in a try-catch and apply a configurable log flush delay (default 500ms) to allow buffered logs to arrive before rethrowing.
- Make the delay configurable (`logFlushDelay`) in `FlutterDriverService` and `FlutterDevice`, defaulting to `Duration.zero` in tests to keep them fast.
- Add tests in `resident_runner_test.dart` and update `drive_service_test.dart` to verify the behavior.

Fixes flutter#162087

TAG=agy
CONV=00a47bdd-e5df-4e8e-9a21-885070200817
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 27, 2026
@github-actions github-actions Bot added the tool Affects the "flutter" command-line tool. See also t: labels. label 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 introduces a configurable logFlushDelay to FlutterDriverService and FlutterDevice to allow buffered or asynchronous log messages (such as engine crash logs) to arrive and flush before rethrowing connection errors. It wraps connection attempts in try-catch blocks to apply this delay and includes unit tests to verify the behavior. The review feedback points out a potential NullCheckError in ResidentRunner if a device is null, suggesting a null check to safely promote the type and avoid masking the original exception.

Comment thread packages/flutter_tools/lib/src/resident_runner.dart
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@github-actions github-actions Bot removed the CICD Run CI/CD label May 27, 2026
@mboetger mboetger added the CICD Run CI/CD label May 29, 2026
bkonyi
bkonyi previously approved these changes Jun 16, 2026
@mboetger mboetger added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 17, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 17, 2026
@auto-submit

auto-submit Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187202, 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 17, 2026
@mboetger mboetger added autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD labels Jun 17, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Jun 17, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Jun 17, 2026
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 17, 2026
@mboetger mboetger added the l:backlog LLM created PR addressing a backlog issue. label Jun 18, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 18, 2026
@mboetger mboetger added the CICD Run CI/CD label Jun 29, 2026
@mboetger mboetger added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 7, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 7, 2026
@auto-submit

auto-submit Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187202, because - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label.

@mboetger mboetger added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 15, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 15, 2026
@auto-submit

auto-submit Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187202, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label.

@mboetger mboetger added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 22, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Jul 22, 2026
Merged via the queue into flutter:master with commit c72bd32 Jul 23, 2026
20 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 23, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Jul 24, 2026
flutter/flutter@2a2a79d...b65f4d9

2026-07-24 [email protected] Add dart_runtime_service_vm_aot.dart.snapshot to the snapshot list in the macOS code signing configuration (flutter/flutter#189981)
2026-07-24 [email protected] Roll Fuchsia Test Scripts from wLST_A-xfOeGT_5mj... to E8hJ1AfK8CtGtaES0... (flutter/flutter#189956)
2026-07-23 [email protected] Consolidate AndroidArch and DarwinArch into CpuArch (flutter/flutter#189315)
2026-07-23 [email protected] Roll Dart SDK from 9258584f98b8 to e3fc57eae9eb (7 revisions) (flutter/flutter#189949)
2026-07-23 [email protected] [flutter_tools] Do not always wait for the full timeout when running Spotlight to locate Android Studio on macOS (flutter/flutter#189952)
2026-07-23 [email protected] Roll Skia from 1d8bf9270d8c to 6e9c4687c001 (15 revisions) (flutter/flutter#189954)
2026-07-23 [email protected] [flutter_tools] Initialize Cache.flutterRoot at the start of the upgrade_test suite (flutter/flutter#189937)
2026-07-23 [email protected] Parse AndroidX property in gradle.properties (flutter/flutter#188372)
2026-07-23 [email protected] [Impeller]Use the IO context for OpenGL program setup (flutter/flutter#185723)
2026-07-23 [email protected] Allow building projects lacking Runner.xcworkspace (flutter/flutter#186239)
2026-07-23 [email protected] [flutter_tools] Invalidate WebEntrypointTarget when plugin set changes (flutter/flutter#189460)
2026-07-23 [email protected] Bump devtools_shared to 13.1.0 (flutter/flutter#189507)
2026-07-23 [email protected] forceNdkDownload should skip configuring cmake when ndk-build is used (flutter/flutter#187201)
2026-07-23 [email protected] Disable execution order shuffling for the flutter_tools upgrade_test suite (flutter/flutter#189920)
2026-07-23 [email protected] Move WindowManager outside of WidgetsApp (flutter/flutter#188866)
2026-07-23 [email protected] Roll Skia from 3424966b8a2b to 1d8bf9270d8c (3 revisions) (flutter/flutter#189901)
2026-07-23 [email protected] Roll Fuchsia Linux SDK from GswhlPRO-D1qSNclx... to 9org0yL3yZkp80x5S... (flutter/flutter#189898)
2026-07-23 [email protected] Remove outdated logs that were added to track #172636 (flutter/flutter#189282)
2026-07-23 [email protected] Roll Skia from 5e183e5aeac5 to 3424966b8a2b (33 revisions) (flutter/flutter#189890)
2026-07-23 [email protected] [examples] Use super parameters in missed spots (flutter/flutter#186194)
2026-07-23 [email protected] [flutter_tools] Bound Spotlight mdfind execution with timeout on macOS (flutter/flutter#189461)
2026-07-23 [email protected] Fix non primary buttons not being captured on windows (flutter/flutter#188394)
2026-07-22 [email protected] Listen to log reader before VM Service and make delay configurable (flutter/flutter#187202)
2026-07-22 [email protected] Roll Dart SDK from 1e65011ee004 to 9258584f98b8 (7 revisions) (flutter/flutter#189883)
2026-07-22 [email protected] Adds skill for generating engine diffs for new releases. (flutter/flutter#189869)
2026-07-22 [email protected] [ios,macos] Add Swift Sourcekit LSP support (flutter/flutter#189761)
2026-07-22 [email protected] [iOS] Mark DisplayLinkManager.shared and init() @mainactor (flutter/flutter#189815)
2026-07-22 [email protected] Fix `Rect::ExpandToMinTransformedSize` to return the input rectangle when no expansion is needed, and remove 1-pixel roundrect to rect simplification (flutter/flutter#189808)
2026-07-22 [email protected] Skip emulator.getEmulators test (flutter/flutter#189879)
2026-07-22 [email protected] Fix null terminator in input truncates clipboard (flutter/flutter#188652)

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 [email protected],[email protected] 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
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. tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

flutter drive Impeller startup crashes appear as VM HTTP exceptions

2 participants