Repository navigation
Description
Steps to reproduce
We do not have a local reproduction yet. This is a production case report from Google Play Android vitals so the Flutter engine team can correlate it with known Impeller/GLES driver issues.
Production environment:
- Flutter:
3.41.9stable - Framework revision:
00b0c91f06209d9e4a41f71b7a512d6eb3b9c694 - Engine revision:
42d3d75a56efe1a2e9902f52dc8006099c45d937 - Engine content hash:
9161402dc0e134b3fb5adee5046b6e84b1a5e1c1 - Android build: production, versionCode
113084 - Renderer: Android Impeller enabled, OpenGLES path in stack
- Play Android vitals issue id:
88d625e80bc1733ad98743f159a39b10
The issue is API 29 only in the Play slices we checked. The affected devices are Samsung Exynos/Mali rows, heavily concentrated on Galaxy Note9.
Current Play errorIssues:search result checked on 2026-06-24 KST:
- Issue:
88d625e80bc1733ad98743f159a39b10 - Cause:
[split_config.arm64_v8a.apk!libflutter.so] fml::KillProcess() - Type/location:
CRASH/SIGABRT - Reports/users:
275reports /74distinct users - OS range: first API
29, last API29 - Last report time:
2026-06-23T22:00:00Z
A separate Play error count metric query for 2026-06-15 through 2026-06-23 16:00 America/Los_Angeles, grouped by deviceModel and apiLevel, shows the same issue id only on API 29 rows:
| Play deviceModel | Device label | API | Reports | Users | SoC / GPU context |
|---|---|---|---|---|---|
samsung/crownlteks |
Galaxy Note9 | 29 | 549 | 68 | Exynos 9810 / Mali-G72 MP18 |
samsung/star2lteks |
Galaxy S9+ | 29 | 103 | 11 | Exynos 9810 / Mali-G72 MP18 |
samsung/starlteks |
Galaxy S9 | 29 | 28 | 5 | Exynos 9810 / Mali-G72 MP18 |
samsung/gta4xlwifi |
Galaxy Tab S6 Lite | 29 | 13 | 5 | Exynos 9611 / Mali-G72 MP3 |
samsung/beyondx |
Galaxy S10 5G | 29 | 10 | 1 | Exynos 9820 / Mali-G76 MP12 |
samsung/m20 |
Galaxy M20 | 29 | 7 | 1 | Exynos 7904 / Mali-G71 MP2 |
samsung/a7y18lteks |
Galaxy A7 (2018) | 29 | 2 | 1 | Exynos 7885 / Mali-G71 MP2 |
samsung/beyond1 |
Galaxy S10 | 29 | 1 | 1 | Exynos/Mali regional variant |
samsung/star2lte |
Galaxy S9+ | 29 | 1 | 1 | Exynos/Mali regional variant |
Expected results
Impeller should decode/upload images without aborting the process on Android 10 Samsung Exynos/Mali devices, or Flutter should denylist/fallback for the affected GLES driver family if this is known to be unsafe.
Actual results
The process aborts inside libflutter.so while ImageDecoderImpeller uploads an image texture through the GLES blit path. Play samples do not show app Dart frames or app-owned Android plugin frames in the crashing native stack.
Representative sampled stack, with app package path redacted:
#00 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#01 split_config.arm64_v8a.apk!libflutter.so (fml::KillProcess())
#02 split_config.arm64_v8a.apk!libflutter.so (fml::LogMessage::~LogMessage())
#03 split_config.arm64_v8a.apk!libflutter.so (std::__fl::__function::__func<impeller::BlitPassGLES::EncodeCommands() const::$_0, ...>::operator()(impeller::ReactorGLES const&))
#04 split_config.arm64_v8a.apk!libflutter.so (impeller::ReactorGLES::React())
#05 split_config.arm64_v8a.apk!libflutter.so (impeller::ReactorGLES::AddOperation(...))
#06 split_config.arm64_v8a.apk!libflutter.so (impeller::BlitPassGLES::EncodeCommands() const)
#07 split_config.arm64_v8a.apk!libflutter.so (flutter::ImageDecoderImpeller::UnsafeUploadTextureToPrivate(...))
#08 split_config.arm64_v8a.apk!libflutter.so (flutter::ImageDecoderImpeller::UploadTextureToPrivate(...)::$_0::operator()())
#09 split_config.arm64_v8a.apk!libflutter.so (fml::SyncSwitch::Execute(fml::SyncSwitch::Handlers const&) const)
#10 split_config.arm64_v8a.apk!libflutter.so (flutter::ImageDecoderImpeller::UploadTextureToPrivate(...))
#11 split_config.arm64_v8a.apk!libflutter.so (flutter::ImageDecoderImpeller::Decode(...)::$_1::operator()() const::'lambda'()::operator()() const)
#12 split_config.arm64_v8a.apk!libflutter.so (fml::MessageLoopImpl::RunExpiredTasksNow())
#13 split_config.arm64_v8a.apk!libflutter.so (fml::MessageLoopAndroid::MessageLoopAndroid()::$_0::__invoke(int, int, void*))
#14 /system/lib64/libutils.so (android::Looper::pollInner(int)+856)
#15 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+56)
#16 /system/lib64/libandroid.so (ALooper_pollOnce+96)
#17 split_config.arm64_v8a.apk!libflutter.so (fml::MessageLoopAndroid::Run())
#18 split_config.arm64_v8a.apk!libflutter.so (std::__fl::__function::__func<fml::Thread::Thread(...)::$_0, ...>::operator()())
#19 split_config.arm64_v8a.apk!libflutter.so (fml::ThreadHandle::ThreadHandle(...)::$_0::__invoke(void*))
#20 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
#21 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)Sample libflutter.so BuildId from Play report: 97a1099df5b1c3c26abf8d75693b1dee226e2d92.
Related issues checked
I searched for an exact match with ImageDecoderImpeller, BlitPassGLES, ReactorGLES, fml::KillProcess, crownlteks, and SM-N960N, but did not find one.
Closest references I found:
- SIGSEGV crashes on Android with Flutter 3.32.4 #171691 contains
ImageDecoderImpeller::UnsafeUploadTextureToPrivate, but the reported crash is VulkanCommandQueueVK::Submitand the issue is closed fixed. - [Impeller] Impeller causes segfaults on older devices #175562 is open for older-device Impeller crashes, but the examples are Vulkan render-pass/canvas stacks, not this GLES image upload abort.
- [Impeller][GLES] Crash on Android: Attempted to acquire an invalid GL handle (reactor_gles.cc(147)) (regression between 3.32.0 and 3.35.x) #176523 is a GLES
ReactorGLESinvalid GL handle issue, but it was closed for missing repro info and is not the sameImageDecoderImpeller -> BlitPassGLES -> fml::KillProcessproduction signature. - [impeller:opengles] wonderous images sometimes don't load #158388 is older OpenGLES image/blit context, but it is not this production abort signature.
What would help
Could the engine team confirm whether this looks like a known Android 10 Mali/GLES driver class that should be denylisted for Impeller, similar in spirit to other naughty-driver handling?
We can validate a release mitigation by disabling Android Impeller for this API 29 Exynos/Mali device family and monitoring whether Play issue 88d625e80bc1733ad98743f159a39b10 disappears, but we do not currently have a local repro device.
Activity
suryaKommana2662 commentedon Jun 24, 2026
@dfdgsdfg Thanks for the detailed report and the Android Vitals data. The issue was reported on Flutter 3.41.9. Since several engine and Impeller changes have landed since that release, could you verify whether the crash still occurs when running your application on the latest stable Flutter version?
Confirming whether the issue persists on the current stable release will help determine whether this is an existing engine issue or whether it may have already been addressed by more recent changes.
If the issue is still reproducible on the latest stable version, the information provided here should make the report actionable for further investigation.
github-actions commentedon Jul 15, 2026
Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now.
If you find this problem please file a new issue with the same description, what happens, logs and the output of 'flutter doctor -v'. All system setups can be slightly different so it's always better to open new issues and reference the related ones.
Thanks for your contribution.
dfdgsdfg commentedon Jul 23, 2026
Follow-up: reproduced in production on Flutter 3.44.6
We have now confirmed that the same crash signature persists in production on Flutter 3.44.6 stable. This was the current stable release when this issue was automatically closed on July 15, 2026. The binary was built through Shorebird using Flutter 3.44.6, and
libflutter.sowas symbolicated with the exact ARM64 engine symbols.Flutter / engine details:
3.44.6stable401254d5890cba1abe1ea364004f4d6bf8e58c24libflutter.soBuild ID:730039c16a8d226e3597c77d059f4f0c863b15ba3.34.0 (113182)Affected devices, one event each:
SM-G965N,Build.DEVICE=star2lteks, Android 10 / API 29, Exynos 9810 / Mali-G72SM-N960N,Build.DEVICE=crownlteks, Android 10 / API 29, Exynos 9810 / Mali-G72Both events resolve to the same Flutter engine path:
The Galaxy Note9 event also includes
libGLES_mali.soin the native stack. This matches the originalImageDecoderImpeller -> BlitPassGLES -> ReactorGLES -> SIGABRTsignature rather than the related Vulkan crash groups.Could this issue be reopened and reviewed by the Impeller/engine team? This provides the requested confirmation that the failure still occurred on a substantially newer stable Flutter release.
dfdgsdfg commentedon Jul 24, 2026
@suryaKommana2662 I confirmed that this issue is still reproducible on the latest production version of Flutter. Would it make sense to reopen this issue?
It may be necessary to provide a way to disable Impeller for all devices using the Exynos 9810. At the moment, manually bootstrapping Flutter with Skia based on the device model resolves the issue.
github-actions commentedon Aug 7, 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.