rive-app / rive-app/rive-android

Destroyed Mali mutex during glTexSubImage2D on Rive Android 11.9.x

Open
#471 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Kotlin
Stars
538
Forks
66
PR merge metrics
No merged PRs in 30d

Description

Submission checklist
  • I have confirmed the issue is present in the latest version of rive-android. Affected hardware is unavailable. We observed it on 11.9.1 and 11.9.2. We have not tested 11.12.0.
  • I have searched the documentation and forums and could not find an answer.
  • I have searched existing issues and this is not a duplicate. This report documents the persistence of the exact crash from closed issue #427 on newer Rive versions.
Description

We see the same crash signature as #427 in a production Android app.

The affected releases use Rive Android 11.9.1 and 11.9.2 with the Compose API.

We found 68 events across five crash groups. The failures cover 34 exact device and Android API combinations.

Representative combinations include:

  • SM-A515F on API 33
  • SM-G991B on API 35
  • SM-A536E on API 36
  • MOTO G15 on API 35
  • INFINIX X6728 on API 35

The native stack matches #427:

HandleUsingDestroyedMutex
pthread_mutex_lock
libGLES_mali.so
glTexSubImage2D
librive-android.so
rive::gpu::RenderContextGLImpl::flush
rive::gpu::RenderContext::flush
rive::CommandServer::processCommands
rive::CommandServer::serveUntilDisconnect

One symbolized event includes the complete Rive path. Other events stop within the Mali driver but share the same abort signature.

The expected result is stable Rive output without a native process abort.

Previous working version

None known on the affected device and Android API combinations.

Reproduction steps / code

We cannot reproduce the crash reliably. The observed production path displays a persistent background through the Compose app.rive.Rive API.

We have not confirmed a navigation, surface teardown, or application lifecycle trigger. We have not identified a specific .riv feature as the trigger.

Rive Android runtime version

11.9.1 and 11.9.2

Rive API

Compose

Device

34 exact model and API combinations. Representative models are listed above.

Device OS

Android 13, Android 15, and Android 16

Other Rive runtimes affected

Unknown

Additional context

Issue #427 closed after one commenter reported success with 11.2.1. That commenter had previously reported a different SIGSEGV variant. The original Mali reporter did not confirm that fix.

Our newer 11.9.x evidence suggests that the Mali destroyed-mutex variant remains.

We currently disable this Rive background only for the affected device and API combinations. We do not disable Rive for all Mali GPUs.

Is there a known race between the command server and EGL surface or context teardown?

If Rive already fixed this path, which release and commit contain the fix?

Which additional data would help? We can collect GPU renderer strings, driver versions, full tombstones, and lifecycle breadcrumbs.

Related report and prior discussion: #427

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Compose app.rive.Rive path and the native stack entries rive::gpu::RenderContextGLImpl::flush and rive::CommandServer::serveUntilDisconnect. Compare the current 11.9.x implementation and issue #427 history, then use the requested renderer strings, driver versions, tombstones, and lifecycle breadcrumbs to investigate the race. Done means identifying a reproducible cause or confirmed fix release, with stable output and no native abort.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
computer-graphics, mobile-dev
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.