Skip to content

[Impeller] HandleUsingDestroyedMutex crash on Mali GPUs during disposal #187140

Description

@sdegenaar

Steps to reproduce

We are seeing a 0.23% crash rate and 0.5% ANR rate in production specifically on Mali GPU devices (e.g., Relndoo TAB10_US, Android 15) when using Impeller (Vulkan backend) on Flutter 3.41.6.

The crash signature is HandleUsingDestroyedMutex originating from the Impeller texture destructor / Isolate::Shutdown path.

This appears to be the same issue as the closed/locked #185324, but I am opening a new issue with the raw native stack traces from the Google Play Console that were missing from the original report.

Steps to reproduce: Difficult to reproduce locally as it relies on specific GPU driver timing, but occurs reliably in production when our package (liquid_glass_widgets) disposes of FragmentProgram shaders and BackdropFilter layers during widget tree teardown.

crash_anrs.txt

Cheers

Expected results

The application should gracefully dispose of the FragmentProgram and BackdropFilter resources and release the associated Vulkan textures without triggering a native driver panic.

Actual results

The application crashes natively with a SIGABRT (HandleUsingDestroyedMutex) originating from the Mali GPU driver (libGLES_mali.so). The crash occurs during Impeller's Vulkan texture teardown or garbage collection sequence, causing the entire app process to terminate abruptly without a Dart-level exception.

Code sample

Code sample
// This is a native GPU driver crash occurring in production (Google Play Console) 
// on specific Mali hardware, so providing a minimal, reproducible code sample 
// is not possible as it depends on exact device timing and Vulkan context lifecycles.
// 
// However, the crash is reliably triggered in our production app when tearing down 
// the widget tree containing heavy GPU workloads, specifically FragmentProgram 
// shaders and BackdropFilter layers.
//
// Please refer to the attached production stack traces which contain the exact 
// native crash location in the Impeller backend.

Screenshots or Video

Screenshots / Video demonstration

[Upload media here]

Logs

crash_anrs.txt

Logs
[Paste your logs here]

crash_anrs.txt

Flutter Doctor output

Doctor output
Note: The production crashes were reported by a user running Flutter 3.41.6 on Android 15 (Impeller/Vulkan). The flutter doctor output below is from the package maintainer's environment (3.44.0). We have not yet confirmed whether the crashes reproduce on 3.44.0.

[Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.44.0, on macOS 26.5 25F71 darwin-arm64, locale en-AU)
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 26.5)
[✓] Chrome - develop for the web
[✓] Connected device (4 available)
[✓] Network resources

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority issues at the top of the work liste: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.platform-androidAndroid applications specificallyteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions