Repository navigation
Closed
Labels
P1High-priority issues at the top of the work listHigh-priority issues at the top of the work listteam-engineOwned by Engine teamOwned by Engine teamtriaged-engineTriaged by Engine teamTriaged by Engine team
Description
b/536875915
Summary
When running on Android API level 29+ with Impeller enabled, an application will crash with SIGABRT via FML_CHECK(false) on startup if any bundled plugin
synchronously requests an external texture or surface producer inside its FlutterEngineConnectionRegistry.java:150 callback.
──────
Preconditions
- Device / OS: Android API level ≥ 29 (causing flutter_main.cc:268-303 to select android_rendering_selector.h:18).
- Renderer: Impeller enabled (default on Android).
- Plugin Behavior: A plugin (or application initialization code) eagerly invokes FlutterRenderer.java:225 or FlutterRenderer.java:261 during
FlutterEngineConnectionRegistry.java:150.
──────
Execution Flow & Race Condition
Platform Thread (Android UI Thread) Raster Thread IO Thread
----------------------------------- ------------- ---------
1. new FlutterEngine()
-> flutterJNI.attachToNative()
-> Shell::CreateWithSnapshot()
-> Post SetupImpellerContext() ----------> (queued)
-> Post ShellIOManager setup ---------------------------------------------> Starts ShellIOManager
-> io_manager_promise.set_value()
2. Shell::Setup() unblocks <------------------------------------------------------ (unblocks Platform Thread early!)
(io_manager_future is ready)
3. attachToNative() returns to Java
4. GeneratedPluginRegister.registerGeneratedPlugins()
5. plugin.onAttachedToEngine(binding)
6. binding.getTextureRegistry()
.createSurfaceProducer()
7. Native RegisterImageTexture()
-> queries android_context_->RenderingApi()
----------------------------------------> Concurrent with:
vk_context_ = GetActualRenderingAPI...
(Vulkan setup ~50-200ms)
Metadata
Metadata
Assignees
Labels
P1High-priority issues at the top of the work listHigh-priority issues at the top of the work listteam-engineOwned by Engine teamOwned by Engine teamtriaged-engineTriaged by Engine teamTriaged by Engine team
Activity
[android]: removes RegisterExternalTexture race condition (flutter#19…
github-actions commentedon Oct 5, 2026
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.