Submission checklist
Description
Recurring native SIGSEGV on the Rive worker thread when the GL backend compiles/links the atlas render pipeline shader. It terminates inside Qualcomm's Adreno shader compiler. The crash is fatal/unhandled and is concentrated on low-end Adreno GPUs (e.g. Adreno 308) on older Android.
On versions: we observe this on 11.6.1. We have not been able to verify on 11.7.0 because we hit a separate rendering regression there (#459) and reverted, so 11.7.0 isn't running in our production builds.
Full stack trace (Rive worker thread, symbolicated Rive frames):
SIGSEGV: Segfault
rive_android::WorkerThread::threadMain
rive_android::WorkerImpl::doFrame
rive_android::PLSWorkerImpl::flush
rive::gpu::RenderContext::flush
rive::gpu::RenderContext::setResourceSizes
rive::gpu::RenderContextGLImpl::resizeAtlasTexture
rive::gpu::RenderContextGLImpl::buildAtlasRenderPipelines
rive::gpu::RenderContextGLImpl::AtlasProgram::compile
EsxContext::LinkProgram
EsxProgram::Link
EsxShaderCompiler::CompileProgram
QGLCLinkProgram
A separate device grouping terminates one frame deeper in libllvm-glnext.so (Adreno's LLVM shader compiler) — we believe it's the same crash.
Previous working version
None known; long-standing (earliest occurrences ~Aug 2025, predating 11.6.x).
Reproduction steps / code
No deterministic local repro; collected from production crash reporting. Occurs during normal rendering of standard animations on the affected GPUs.
Rive Android runtime version
11.6.1
Rive API
Legacy (RiveAnimationView). We use the Compose API in one place but have not seen this crash attributed to it.
Device
moto g6 play (Adreno 308); also Redmi, Samsung Galaxy J4+ (SM-J415x), Samsung Galaxy Tab A (SM-T380/385/387) — all low-end Adreno.
Device OS
Android 9 (range 8.1–9).
App minimum SDK level
API 26
App target SDK level
API 35
App NDK level
Not pinned (AGP default).
Other Rive runtimes affected
Unknown.
Dependencies with native libraries
Media3/ExoPlayer, LiveKit.
Additional context
Recurring and ongoing. Exclusively on low-end 32-bit (armeabi-v7a) Qualcomm/Adreno devices on older Android. The crash is in the driver's link step for Rive's atlas program, which suggests the generated GLSL (or the compile/link path) trips a bug in older Adreno shader compilers. Any way to disable/avoid the atlas pipeline, or fall back gracefully, on these GPUs would help us mitigate.
Submission checklist
rive-android— see note in DescriptionDescription
Recurring native
SIGSEGVon the Rive worker thread when the GL backend compiles/links the atlas render pipeline shader. It terminates inside Qualcomm's Adreno shader compiler. The crash is fatal/unhandled and is concentrated on low-end Adreno GPUs (e.g. Adreno 308) on older Android.On versions: we observe this on
11.6.1. We have not been able to verify on11.7.0because we hit a separate rendering regression there (#459) and reverted, so 11.7.0 isn't running in our production builds.Full stack trace (Rive worker thread, symbolicated Rive frames):
A separate device grouping terminates one frame deeper in
libllvm-glnext.so(Adreno's LLVM shader compiler) — we believe it's the same crash.Previous working version
None known; long-standing (earliest occurrences ~Aug 2025, predating 11.6.x).
Reproduction steps / code
No deterministic local repro; collected from production crash reporting. Occurs during normal rendering of standard animations on the affected GPUs.
Rive Android runtime version
11.6.1Rive API
Legacy(RiveAnimationView). We use the Compose API in one place but have not seen this crash attributed to it.Device
moto g6 play (Adreno 308); also Redmi, Samsung Galaxy J4+ (SM-J415x), Samsung Galaxy Tab A (SM-T380/385/387) — all low-end Adreno.
Device OS
Android 9 (range 8.1–9).
App minimum SDK level
API 26
App target SDK level
API 35
App NDK level
Not pinned (AGP default).
Other Rive runtimes affected
Unknown.
Dependencies with native libraries
Media3/ExoPlayer, LiveKit.
Additional context
Recurring and ongoing. Exclusively on low-end 32-bit (
armeabi-v7a) Qualcomm/Adreno devices on older Android. The crash is in the driver's link step for Rive's atlas program, which suggests the generated GLSL (or the compile/link path) trips a bug in older Adreno shader compilers. Any way to disable/avoid the atlas pipeline, or fall back gracefully, on these GPUs would help us mitigate.