rive-app / rive-app/rive-android
Destroyed Mali mutex during glTexSubImage2D on Rive Android 11.9.x
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-A515Fon API 33SM-G991Bon API 35SM-A536Eon API 36MOTO G15on API 35INFINIX X6728on 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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