Skip to content

[flutter_tools] when the doctor fails to find clang++, it crashes #99944

@christopherfujino

Description

@christopherfujino

For example: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8820034898594591521/+/u/flutter_doctor/stdout

[✓] Flutter (Channel unknown, 2.11.0-0.0.pre.867, on Debian GNU/Linux 9 (stretch) 4.9.0-14-amd64, locale en_US.UTF-8)
    • Flutter version 2.11.0-0.0.pre.867 at /b/s/w/ir/x/w/flutter
    • Upstream repository unknown
    • Framework revision 201a64c98f (3 minutes ago), 2022-03-11 00:50:16 +0100
    • Engine revision 6239bfb884
    • Dart version 2.17.0 (build 2.17.0-182.0.dev)
    • DevTools version 2.11.1

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /b/s/w/ir/cache/android/sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_HOME = /b/s/w/ir/cache/android/sdk
    • ANDROID_SDK_ROOT = /b/s/w/ir/cache/android/sdk
    • Java binary at: /usr/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_322-8u322-b06-1~deb9u1-b06)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = /b/s/w/ir/cache/chrome/chrome/chrome

[☠] Linux toolchain - develop for Linux desktop (the doctor check crashed)
    ✗ Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know about this issue at https://github.com/flutter/flutter/issues.
    ✗ ProcessException: Failed to find "clang++" in the search path.
        Command: clang++ 
    • #0      LocalProcessManager.run (package:process/src/interface/local_process_manager.dart:87:7)
      #1      ErrorHandlingProcessManager.run.<anonymous closure> (package:flutter_tools/src/base/error_handling_io.dart:669:24)
      #2      _run (package:flutter_tools/src/base/error_handling_io.dart:567:20)
      #3      ErrorHandlingProcessManager.run (package:flutter_tools/src/base/error_handling_io.dart:668:12)
      #4      LinuxDoctorValidator._getBinaryVersion (package:flutter_tools/src/linux/linux_doctor.dart:166:38)
      #5      LinuxDoctorValidator.validate (package:flutter_tools/src/linux/linux_doctor.dart:68:25)
      #6      asyncGuard.<anonymous closure> (package:flutter_tools/src/base/async_guard.dart:111:32)
      #7      asyncGuard.<anonymous closure> (package:flutter_tools/src/base/async_guard.dart:109:18)
      #8      _rootRun (dart:async/zone.dart:1426:13)
      #9      _CustomZone.run (dart:async/zone.dart:1328:19)
      #10     _runZoned (dart:async/zone.dart:1861:10)
      #11     runZonedGuarded (dart:async/zone.dart:1849:12)
      #12     runZoned (dart:async/zone.dart:1780:12)
      #13     asyncGuard (package:flutter_tools/src/base/async_guard.dart:109:3)
      #14     Doctor.startValidatorTasks (package:flutter_tools/src/doctor.dart:206:9)
      #15     Doctor.diagnose (package:flutter_tools/src/doctor.dart:316:72)
      #16     DoctorCommand.runCommand (package:flutter_tools/src/commands/doctor.dart:50:48)
      #17     FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1332:12)
      <asynchronous suspension>
      #18     FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1173:27)
      <asynchronous suspension>
      #19     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
      <asynchronous suspension>
      #20     CommandRunner.runCommand (package:args/command_runner.dart:209:13)
      <asynchronous suspension>
      #21     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:281:9)
      <asynchronous suspension>
      #22     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
      <asynchronous suspension>
      #23     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:229:5)
      <asynchronous suspension>
      #24     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
      <asynchronous suspension>
      #25     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
      <asynchronous suspension>
      #26     main (package:flutter_tools/executable.dart:94:3)
      <asynchronous suspension>


[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Debian GNU/Linux 9 (stretch) 4.9.0-14-amd64
    • Chrome (web)    • chrome • web-javascript • Chromium 84.0.4147.0

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 2 categories.

I am surprised that:

  1. failing to find clang++, the doctor shows a stacktrace, rather than a more user-friendly message and instructions to install clang
  2. the doctor exits with code 0 even though there was an exception (and thus does not fail the CI build)

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work listtoolAffects the "flutter" command-line tool. See also t: labels.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions