Skip to content

[Impeller][GLES] ImageDecoderImpeller aborts on Android 10 Samsung Exynos/Mali devices #188472

Closed

Description

@dfdgsdfg

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.9 stable
  • 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: 275 reports / 74 distinct users
  • OS range: first API 29, last API 29
  • 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:

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

  1. suryaKommana2662 commented on Jun 24, 2026

    @suryaKommana2662
    Contributor

    @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.

  2. added
    platform-androidAndroid applications specifically
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    e: impellerImpeller rendering backend issues and features requests
    and removed
    in triagePresently being triaged by the triage team
    on Jun 24, 2026
  3. github-actions commented on Jul 15, 2026

    @github-actions

    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.

  4. dfdgsdfg commented on Jul 23, 2026

    @dfdgsdfg
    ContributorAuthor

    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.so was symbolicated with the exact ARM64 engine symbols.

    Flutter / engine details:

    • Flutter: 3.44.6 stable
    • Engine revision: 401254d5890cba1abe1ea364004f4d6bf8e58c24
    • libflutter.so Build ID: 730039c16a8d226e3597c77d059f4f0c863b15ba
    • App build: 3.34.0 (113182)
    • Result: 2 events / 2 affected users

    Affected devices, one event each:

    • Samsung Galaxy S9+ SM-G965N, Build.DEVICE=star2lteks, Android 10 / API 29, Exynos 9810 / Mali-G72
    • Samsung Galaxy Note9 SM-N960N, Build.DEVICE=crownlteks, Android 10 / API 29, Exynos 9810 / Mali-G72

    Both events resolve to the same Flutter engine path:

    fml::LogMessage::~LogMessage()                                 logging.cc:186
    impeller::BlitPassGLES::EncodeCommands() const::$_0            blit_pass_gles.cc:88
    impeller::ReactorGLES::React()                                 reactor_gles.cc:261
    flutter::ImageDecoderImpeller::UnsafeUploadTextureToPrivate()  image_decoder_impeller.cc:527

    The Galaxy Note9 event also includes libGLES_mali.so in the native stack. This matches the original ImageDecoderImpeller -> BlitPassGLES -> ReactorGLES -> SIGABRT signature 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.

  5. dfdgsdfg commented on Jul 24, 2026

    @dfdgsdfg
    ContributorAuthor

    @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.

  6. github-actions commented on Aug 7, 2026

    @github-actions

    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 -v and a minimal reproduction of the issue.

  7. locked as resolved and limited conversation to collaborators on Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    e: impellerImpeller rendering backend issues and features requestsplatform-androidAndroid applications specificallywaiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions