## Stable Cherry Pick
Cherry-picks https://github.com/flutter/flutter/pull/173014 to stable to fix unhandled crash on Android Snapdragon 845 devices due to a corrupted cache, preventing apps from starting.
Fixes https://github.com/flutter/flutter/issues/172624
Impacted Users: All users with Android Snapdragon 845
Impact Description: the app can crash on start because of a corrupted cache.
Workaround: None
Risk: Low
Test Coverage: A test is included that checks succesful reads of an incomplete vk cache
Validation Steps: https://github.com/flutter/flutter/issues/172624#issuecomment-3130214789
This crash has unfortunately prevented our app from using Flutter 3.35 and even 3.32, missing out a whole new set of fixes from these last Flutter releases for quite some time now.
cc @jason-simmons (PR author) @chinmaygarde (PR reviewer) in case there is something I could have missed with the CP request and description
This pull request is a manual cherry pick of
https://github.com/flutter/flutter/pull/172871 after I had trouble
updating the automatic cherry pick pull request
(https://github.com/flutter/flutter/pull/175595).
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/172105
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter
developers. See [best
practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md)
for examples
Fixes issue in iOS add-to-app where Flutter view may hang after multiple
transitions.
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot
ship an iOS app)? Does it impact development (ex. flutter doctor crashes
when Android Studio is installed), or the shipping production app (the
app crashes on launch)
App may hang after transitioning between multiple pages on iOS.
### Workaround:
Is there a workaround for this issue?
No
### Risk:
What is the risk level of this cherry-pick?
- [x] Low
- [ ] Medium
- [ ] High
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
- [x] Yes
- [ ] No
### Validation Steps:
What are the steps to validate that this fix works?
Using https://github.com/flutter/samples/tree/main/add_to_app/fullscreen
* Launch a Flutter screen
* Dismiss or pop the Flutter screen to return to native
* Repeat the process several times (open Flutter, close, then open
again)
* Flutter screen should not freeze
Co-authored-by: gaaclarke <30870216+gaaclarke@users.noreply.github.com>
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/174513
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
Fix a bug where platform view's gesture blocking fails to work on iOS 26
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
All platform views (e.g. web view, map, etc) on iOS 26
### Workaround:
Is there a workaround for this issue?
No
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
As explained in the linked issue above, interact with the flutter UI on top of the platform view. Notice that the platform view still receives the touches, despite that the platform view is under flutter UI and it shouldn't receive the touches. This only happens on iOS 26.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/173474
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
`PlatformDispatchers.instance.engineId` returns `null` after hot restart
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
It affects anyone who uses engineId while in development (since it happens after hot-restart).
### Workaround:
Is there a workaround for this issue?
Not doing any hot-restarting while development which is not ideal.
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
Running this app and hot restarting no longer prints null:
```dart
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
print('engineId: ${PlatformDispatcher.instance.engineId}');
}
// ...
}
```
### Issue Link:
https://github.com/flutter/flutter/issues/174100
### Changelog Description:
Fixes errors seen when rendering superellipses on Impeller.
### Impact Description:
This affects apps like the one in https://github.com/flutter/flutter/issues/174100 that render Cupertino widgets which use superellipses. The app may show flickering or other artifacts when rendered with Impeller (particularly on the GLES back end).
### Workaround:
Disable Impeller
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
Run the app in https://github.com/flutter/flutter/issues/174100 on an Android device and select the Impeller GLES back end. Confirm that it can scroll without flickering.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/171691
### Changelog Description:
Fixes a race that can cause crashes in the Impeller Vulkan back end.
### Impact Description:
Crashes in apps running on Impeller/Vulkan.
### Workaround:
Disable Impeller
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
The crash does not happen consistently. One way that I have been able to reproduce it is:
* run Gallery with Impeller/Vulkan on a slow phone
* scroll through the Shrine screen and start a lot of image decodes
* quickly exit the app before the decodes have completed
Without the fix, the app will often crash if an image decode tries to access the Vulkan context after it was partially shut down while exiting the app.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
< Replace with issue link here >
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
< Replace with changelog description here >
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
< Replace with impact description here >
### Workaround:
Is there a workaround for this issue?
< Replace with workaround here >
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
< Replace with validation steps here >
This pull request was created manually.
### Issue Link:
https://github.com/flutter/flutter/issues/173741
### Changelog Description:
Fix a bug that prevents screen readers from pressing buttons through keyboard shortcut.
### Impact Description:
A11y for buttons (or any tappables) is broken in Flutter Web.
### Workaround:
Is there a workaround for this issue?
No.
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
Follow repro steps in https://github.com/flutter/flutter/issues/173741
This pull request is created by [automatic cherry pick
workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate
this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
Stablize infrastructure.
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter
developers. See [best
practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md)
for examples
N/A
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot
ship an iOS app)? Does it impact development (ex. flutter doctor crashes
when Android Studio is installed), or the shipping production app (the
app crashes on launch)
Failed pre-submit/post-submit builds that are not actionable.
### Workaround:
Is there a workaround for this issue?
No
### Risk:
What is the risk level of this cherry-pick?
- [x] Low
- [ ] Medium
- [ ] High
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
- [ ] Yes
- [x] No
### Validation Steps:
What are the steps to validate that this fix works?
You can merge PRs.
Co-authored-by: Matan Lurey <matanlurey@users.noreply.github.com>
(cherry picked from commit 4abea340e19db0c8cf2df804104335a503e37ec0)
Fixes of #171992 for the stable branch.
Cherry-pick of [https://github.com/flutter/flutter/pull/173807](https://github.com/flutter/flutter/pull/173807) onto stable.
**Impacted Users**
Developers and end-users of Flutter applications running on Samsung Galaxy S10 or Note 10 series devices equipped with Exynos 9820/9825 SoCs.
**Impact Description**
Due to malfunctioning Vulkan drivers on these SoCs, platform views that rely on `SurfaceView` fail to render correctly. The original PR addresses this by blocklisting the affected SoCs, forcing them to use Impeller with OpenGL ES instead of Vulkan.
**Workaround**
Aside from setting `io.flutter.embedding.android.ImpellerBackend` (which is not available in production) or disabling Impeller entirely, there is no practical workaround for this issue on affected devices.
**Risk**
The risk of this cherry-pick is low. The original PR only adds specific SoCs to the blocklist and renames a static variable, which does not affect other devices regardless of whether they use this mechanism.
**Test Coverage**
Due to the nature of the issue and the fix, validation can only be performed through manual testing on the affected devices. As the reporter of the original issue, I have verified the fix on the Galaxy S10 5G(SM-G977N, Exynos 9820), confirming that the change resolves the rendering problem.
**Validation Steps**
1. Create a test Flutter app that uses a platform view with `SurfaceView` (e.g., [https://github.com/bc-lee/test-flutter-android-texture](https://github.com/bc-lee/test-flutter-android-texture) or [https://github.com/gaaclarke/surface_platformview](https://github.com/gaaclarke/surface_platformview)).
2. Run the app on the targeted devices.
3. Verify that the application renders correctly without graphical issues.
**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/173728
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
N/A
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
Skips building Android unit tests during the engine release builder
### Workaround:
Is there a workaround for this issue?
No
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
The release builder step works.
Cherry pick of https://github.com/flutter/flutter/pull/173602
Impacted users: All Linux users of Flutter
Impact Description: Due to calling gtk_window_redraw on a Flutter thread a lock up may occur. The Flutter app will then become unresponsive.
Workaround: No workaround
Risk: Low - fix is to run the GTK call on the GTK thread which is what the correct behaviour should be.
Test coverage: Rendering covered by existing tests, use of thread not explicitly tested, but https://github.com/flutter/flutter/issues/173660 opened to add this in future.
Validation Steps: Run test program in https://github.com/flutter/flutter/issues/173447 which generates many frames and maximizes the chance of a lock up.
Updates Dart has for 3.35 stable release to Dart 3.9 hash -- https://dart.googlesource.com/sdk/+/54588cb8088890ea08fe1a31b95efe478a4609b5.
Steps I took:
1. Updated hash to desired version.
2. Run `engine/src/tools/dart/create_updated_flutter_deps.py -f DEPS` to update any Dart dependencies if needed (none updated).
3. Updated `engine/src/flutter/ci/licenses_golden/licenses_dart` with diff produced in error from https://ci.chromium.org/ui/p/flutter/builders/try/Linux%20linux_license/36032/overview build failure.
**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
#172250
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
Fixes a bug where `TextInput.hide` call incorrect clears the text in the active text field.
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
If an app calls `TextInput.hide` to hide the software keyboard, the user input in the current active text field will also be erased. It impacts the production app.
The framework itself doesn't seem to call `TextInput.hide` in a way that would affect the user.
### Workaround:
Is there a workaround for this issue?
Yes, in theory, developers can store and restore the `TextEditingValue`, when they need to call `TextInput.hide`, to undo the clear. However I suspect the reverted PR may also [break voiceover](https://github.com/flutter/flutter/issues/145681#issuecomment-3110985123).
### Risk:
What is the risk level of this cherry-pick?
This is a revert of #160653. The reverted PR was merged in February, and the previous implementation was [introduced in 2021](https://github.com/flutter/engine/pull/23776).
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
- [] No
This change is a revert so the added test will also get reverted.
### Validation Steps:
What are the steps to validate that this fix works?
To verify the fix on master (it has already landed on master), run this app:
```dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SizedBox(
child: ListView(
children: [
TextButton(
child: Text('hide keyboard'),
onPressed: () =>
SystemChannels.textInput.invokeListMethod("TextInput.hide"),
),
TextField(
controller: TextEditingController(text: '️a' * 20),
maxLines: 1,
),
],
),
),
),
);
}
}
```
focus the text field and then click the hide keyboard button. The text "aaaaaa..." should remain after the button is clicked.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/172257
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
N/A
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
Cannot release (Windows builder fails)
### Workaround:
Is there a workaround for this issue?
No
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
Try publishing another release
After the fuchsia build process, be sure to tag uploaded artifacts with
`content_aware_hash:` if configured.
fixes#171985
This was a bit of a rabbit hole, with some "magic parameters" that
control uploading / tagging. I'm not sure cipd supports two tags with
the say keys; but I wouldn't want the content hash having the key
"git_revision".
Pre-submits: Not affected since --engine-version is always '' which is
read as "do not upload"
Post-submits: Reads the `linux_fuchsia.json` builder to look for flags.
> Note: This needs to land before the tool can be updated to download
the content_aware_hash tag.
Tested: locally, on linux, after building all the x64 targets. With and
without engine-version, with and without linux_fuchsia.json flags.
```shell
$ src/flutter/tools/fuchsia/merge_and_upload_debug_symbols.py --target-arch x64 --engine 'abcd' --upload --out-dir tmp --symbol-dirs out/ci/fuchsia_debug_x64/.build-id out/ci/fuchsia_release_x64/.build-id out/ci/fuchsia_profile_x64/.build-id
Using content hash 2201006225127f112f6576fcf73dd00671b2012e for engine version
['cipd', 'create', '-pkg-def', '/usr/local/google/home/codefu/src/flutter/engine/tmp/debug_symbols.cipd.yaml', '-ref', 'latest', '-tag', 'git_revision:abcd', '-verification-timeout', '10m0s', '-tag', 'content_aware_hash:2201006225127f112f6576fcf73dd00671b2012e']
```
```
$ python3 src/flutter/tools/fuchsia/build_fuchsia_artifacts.py --archs x64 --engine 'abc' --cipd-dry-run --upload
Using content hash 2201006225127f112f6576fcf73dd00671b2012e for engine version
codefu: ['cipd', 'create', '-pkg-def', 'fuchsia.cipd.yaml', '-ref', 'latest', '-tag', 'git_revision:abc', '-tag', 'content_aware_hash:2201006225127f112f6576fcf73dd00671b2012e']
```
Changes since last dart roll:
```
3ad640094c3 (tag: 3.9.0-333.0.dev) Version 3.9.0-333.0.dev
a706ea8a9b5 Remove left-over debugging code that saved files to disk.
c47a8b0adaa [vm/shared] Restore fast-path for RunWithStoppedMutators.
3e462c1343f [vm,dyn_modules] Support external/native methods in bytecode
e69b7eafcaa [co19] Roll co19 to a5d7b62b78dd9278c30a44cb2d22b8870b360a0e
cb5aed532f1 (tag: 3.9.0-332.0.dev) Version 3.9.0-332.0.dev
15a00898af8 Add the ability to copy pipes using File.Copy
08e5a2d5281 (tag: 3.9.0-331.0.dev) Version 3.9.0-331.0.dev
c87169ef1a2 Remove InfoDeclarationStore.
d6c4707b938 Elements. Remove InterfaceElementImpl.lookUpInheritedMethod()
279b379ef92 Elements. Replace FragmentImpl.nameOffset with firstTokenOffset.
14bb2be360d [ddc] Optimize building type environments at runtime
7e4fca78a87 [changelog] Clean up recent changelog entries
f3d9d5e6868 (tag: 3.9.0-330.0.dev) Version 3.9.0-330.0.dev
313fd866d1f [deps] rev http, i18n, tools, web
895413f982f [analyzer] Add special case for bool.fromEnvironment('dart.library.js_interop')
5ce3cd24d20 [ddc] Fix hot reload test runner ternary.
9737e0c8530 analyzer: Simplify the sealed supertype check
3220f9b511f (tag: 3.9.0-329.0.dev) Version 3.9.0-329.0.dev
b207705bd58 [dart2wasm] Update interop specializers to live in library with specialized member.
83d862217e5 Bump pub to c3e50919d11896f014cb971e1776d00a0e2d18b3
```
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->
*Replace this paragraph with a description of what this PR is changing
or adding, and why. Consider including before/after screenshots.*
*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*
*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*
## Pre-launch Checklist
- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] 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.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
The shell had been calling PlatformView::ReleaseResourceContext every
time a shell instance shuts down in order to clear the EGL context from
the IO thread.
But there may be other spawned shells that are also using the same IO
manager and IO task runner. If the task that calls
ReleaseResourceContext runs after the other shells call
CreateResourceContext, then the IO thread will be left without an EGL
context. That will cause errors in operations like image decoding that
need to invoke OpenGL ES APIs on the IO thread.
See https://github.com/flutter/flutter/issues/171213