Repository navigation
Description
Steps to reproduce
- Build a release/profile Android APK with Impeller opted out via AndroidManifest.xml:
- Ship to production. App uses
video_player(^2.13.0) to preview user-uploaded video attachments via aTexturewidget, and general image/list UI elsewhere. - Monitor Google Play Console -> Android vitals -> Crashes and ANRs for the release.
We opted out of Impeller specifically because of native crashes/ANRs with Impeller enabled (see "Actual results" below), only to now see the new deprecation warning telling us this opt-out path is going away with no alternative offered other than "fix the underlying issue," which is upstream vendor GPU driver code we don't control.
Expected results
Either:
- The EnableImpeller=false opt-out continues to be supported until Impeller reaches parity/stability on affected GPU driver stacks (Mali, in this case), or
- Impeller does not crash/hang natively on the affected devices/drivers in the first place.
Actual results
With Impeller enabled (the default, no opt-out), we observed the following in production (Play Console, app version 12 (1.0.2), last 60 days, "In production" issues, User-perceived crashes and ANRs only):
-
[libGLES_mali.so] - SIGABRT (15 affected users, largest single issue, 33% of all crash/ANR events)
Thread: FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x)
backtrace:
#00 pc ... libc.so (abort+156)
Update README.md: Fix spelling mistake #1 pc ... libc.so (__fortify_fatal(char const*, ...)+124)
Tweak to use async/await #2 pc ... libc.so (HandleUsingDestroyedMutex(pthread_mutex_t*, char...))
Use arrow function in README example #3 pc ... libc.so (pthread_mutex_lock+240)
Unfortunately, Sky has stopped #4 pc ... /vendor/lib64/egl/mt6835/libGLES_mali.so
Sky runtime for OS X #5 pc ... /vendor/lib64/egl/mt6835/libGLES_mali.so
Source code SkyDemo.apk #6 pc ... /vendor/lib64/egl/mt6835/libGLES_mali.so
Stocks example: 404 on resolving image assets #7 pc ... /vendor/lib64/egl/mt6835/libGLES_mali.so
Added missing semicolon to sample code in README.md. #8 pc ... libc.so (__pthread_start(void*)+232)
Naming convention for ToolBar (ActionBar) #9 pc ... libc.so (__start_thread+64)
Devices: OPPO OP5B05L1, vivo V2437, Infinix Infinix-X6739, OPPO OP5F2BL1 (all MediaTek mt6835/Mali). Android 13, 14, 15, 16. -
[libGLES_mali.so] hal::halp::fence_internal::signal_internal() - SIGABRT (4 users)
Thread: FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x)
backtrace:
#00 pc ... libc.so (abort+164)
Update README.md: Fix spelling mistake #1 pc ... libc.so (__fortify_fatal+124)
Tweak to use async/await #2 pc ... libc.so (HandleUsingDestroyedMutex(pthread_mutex_t*, char...))
Use arrow function in README example #3 pc ... libc.so (pthread_mutex_lock+176)
Unfortunately, Sky has stopped #4 pc ... /vendor/lib64/egl/libGLES_mali.so (hal::halp::fence_internal::signal_internal()+52)
Sky runtime for OS X #5 pc ... /vendor/lib64/egl/libGLES_mali.so (hal::halp::fence_release_callback(cmar_event*, int, void*)+24)
Source code SkyDemo.apk #6 pc ... /vendor/lib64/egl/libGLES_mali.so (cmarp_event_call_all_deferred_callbacks+264)
Stocks example: 404 on resolving image assets #7 pc ... /vendor/lib64/egl/libGLES_mali.so (cmarp_backend_thread+732)
Added missing semicolon to sample code in README.md. #8 pc ... libc.so (__pthread_start(void*)+264)
Naming convention for ToolBar (ActionBar) #9 pc ... libc.so (__start_thread+64)
Devices: Samsung Galaxy A12s, A17x, A21s. Android 12, 13, 15. -
impeller::AHBTextureSourceVK::AHBTextureSourceVK(...) - SIGSEGV (2 users), reached through Impeller's own external-texture paint path (i.e. video_player's Texture widget):
backtrace:
#00 pc ... /vendor/lib64/libgralloc_extra.so (gralloc_extra_query+76)
Update README.md: Fix spelling mistake #1 pc ... /vendor/lib64/libgpu_aux.so (AuxGralloc::setBufferSFInfo(ANativeWindowBuffer const*, unsigned int, unsigned int)+76)
Tweak to use async/await #2 pc ... /vendor/lib64/libgpu_aux.so (GuiExtSetDstColorSpace+464)
Use arrow function in README example #3 pc ... /vendor/lib64/libgpu_aux.so (GPUAUXContext::prepare(ANativeWindowBuffer*)+296)
Unfortunately, Sky has stopped #4 pc ... /vendor/lib64/egl/libGLES_mali.so
Sky runtime for OS X #5 pc ... /vendor/lib64/egl/libGLES_mali.so
Source code SkyDemo.apk #6 pc ... libflutter.so (impeller::AHBTextureSourceVK::AHBTextureSourceVK(std::__fl::shared_ptrimpeller::Context const&, AHardwareBuffer*, AHardwareBuffer_Desc const&))
Stocks example: 404 on resolving image assets #7 pc ... libflutter.so (flutter::ImageExternalTextureVKImpeller::ProcessFrame(flutter::Texture::PaintContext&, SkRect const&))
Added missing semicolon to sample code in README.md. #8 pc ... libflutter.so (flutter::ImageExternalTexture::Paint(flutter::Texture::PaintContext&, impeller::TRect const&, bool, flutter::DlImageSampling))
Naming convention for ToolBar (ActionBar) #9 pc ... libflutter.so (flutter::TextureLayer::Paint(flutter::PaintContext&) const)
... (standard LayerTree::Paint / Rasterizer::Draw / fml::MessageLoopAndroid::Run chain down to __start_thread)
Devices: Samsung Galaxy A22, Samsung Galaxy M32 (MediaTek Helio G80/G96 + Mali). Android 13. -
ANRs consistent with the same failure family: flutter::PlatformViewA... ("Input dispatching timed out"), [libsync.so] sync_wait ("Input dispatching timed out"), and std::__fl::condition_var... waits inside libflutter.so on both arm64_v8a and armeabi_v7a builds - i.e. Flutter engine threads blocked waiting on GPU fences/surfaces, on both ABIs.
-
Two additional ANRs specifically in com.nic.epcs.MainActivity.onCreate at cold start ("Input dispatching timed out (No focused window)") on Redmi 12C (Android 12) and vivo Y22T (Android 14) - though on further investigation these traced to a different, unrelated plugin doing synchronous TextToSpeech engine enumeration on the main thread, not Impeller. Mentioning only to be transparent that not every row in our dashboard was Impeller-related - the ones listed above are.
All affected devices are budget/mid-range phones (MediaTek mt6835, MediaTek Helio-based Samsung A/M-series) sharing ARM Mali GPUs, spanning Android 12 through 16 - i.e. not tied to one Android version, but to the Mali driver family across multiple vendor integrations (MediaTek's own libgpu_aux.so/libgralloc_extra.so glue, and Samsung's Exynos/MediaTek variants). This device profile is exactly our primary user base: a Government of India field-data-collection app used by rural agricultural extension officers, most of whom carry the cheapest available Android hardware.
Given this, we opted out via EnableImpeller=false in AndroidManifest.xml as a stopgap, specifically to keep video-preview and general navigation crash-free for these users. The new deprecation warning says to "report a bug describing the issue" if we need to keep opting out - this issue is that report. We cannot re-enable Impeller in production until this class of crash is resolved, as it directly affects a core workflow (reviewing uploaded photo/video evidence of government events) with a hard crash (SIGABRT/SIGSEGV), not a cosmetic glitch.
Code sample
Code sample
// We're not able to share the full production app, but the relevant path is
// exactly Flutter's standard external-texture rendering used by any
// video_player-backed Texture widget - no custom native code, no custom
// PlatformView, no manual EGL/Vulkan handling on our side.
//
// pubspec.yaml dependencies touching the Android rendering surface:
// video_player: ^2.13.0
// photo_view: ^0.15.0
// image_picker
// file_pickerScreenshots or Video
Screenshots / Video demonstration
N/A - these are native crashes captured via Play Console's Android vitals (App ANRs & Crashes), not something we can screen-record from a running device (they terminate the process).
Logs
Logs
Deprecation warning that prompted this report:
I/flutter: [IMPORTANT:flutter/shell/common/shell.cc(528)] [Action Required]: Impeller opt-out deprecated.
The application opted out of Impeller by either using the
`--no-enable-impeller` flag or the
`io.flutter.embedding.android.EnableImpeller` `AndroidManifest.xml` entry.
These options are going to go away in an upcoming Flutter release. Remove
the explicit opt-out. If you need to opt-out, please report a bug describing
the issue.
https://github.com/flutter/flutter/issues/new?template=02_bug.ymlNative crash stack traces are included in full above under "Actual results."
Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.44.6, on Microsoft Windows [Version 10.0.22631.4460], locale en-IN) [196ms]
• Flutter version 3.44.6 on channel stable at C:\Users\rajat_jain\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision ee80f08bbf (3 weeks ago), 2026-07-08 15:02:06 -0700
• Engine revision 83675ed276
• Dart version 3.12.2
• DevTools version 2.57.0
[✓] Windows Version (11 Pro 64-bit, 23H2, 2009) [2.7s]
[✓] Android toolchain - develop for Android devices (Android SDK version 37.0.0) [3.1s]
• Android SDK at C:\Users\rajat_jain\AppData\Local\Android\sdk
• Platform android-37.0, build-tools 37.0.0
• Java version OpenJDK Runtime Environment (build 21.0.10+-14961533-b1163.108)
• All Android licenses accepted.
[✓] Chrome - develop for the web [7ms]
[✗] Visual Studio - develop Windows apps [6ms]
✗ Visual Studio not installed; this is necessary to develop Windows apps.
[✓] Connected device (4 available) [384ms]
• sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64 • Android 14 (API 34) (emulator)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.22631.4460]
• Chrome (web) • chrome • web-javascript • Google Chrome 150.0.7871.182
• Edge (web) • edge • web-javascript • Microsoft Edge 150.0.4078.65
[✓] Network resources [602ms]
• All expected network resources are available.
! Doctor found issues in 1 category.
Activity
suryaKommana2662 commentedon Jul 29, 2026
@rajatjain909 Thanks for the detailed report and for providing the production crash and ANR data. Could you please confirm which
Flutter SDK versionwas used to build the production APK (app version 12 / 1.0.2) that generated the reported crash data? This will help us correlate the crash reports with the corresponding Flutter engine revision and also, could you also provide a minimal reproducible sample(main.dartfile) that demonstrates the crash? This would help the team investigate the issue further. We understand that reproducing the crash may depend on the specific affected Mali GPU devices and driver configurations.rajatjain909 commentedon Aug 15, 2026
@suryaKommana2662 Thank you for your patience. I checked and the Flutter SDK Version at the time
3.44.6.And the answer to your other question, following is my
main.dartfile; however its generic asFthese error and ANR were in google play console; and I don't understood the cause; so I tried to understand using AI, that was also beyond me. There is nothing in logs when I run the project on emulator or my device.
suryaKommana2662 commentedon Aug 17, 2026
@rajatjain909 Thanks for the additional details. I noticed that the reported production crashes occurred with Flutter 3.44.6. Could you please verify whether the issue is still reproducible with the latest stable Flutter release? If the issue persists, please let us know
github-actions commentedon Sep 7, 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.
github-actions commentedon Sep 21, 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.