I'm experiencing a consistent native crash SIGSEGV (null pointer dereference at 0x0000000000000004) in librnskia.so on low-end Android 10 devices with PowerVR GE8320 GPU (MediaTek Helio G35/G25 SoC).
The crash occurs immediately when the first <Canvas> component tries to render — in my case, a simple temperature chart using <Path>, <Circle>, and <LinearGradient>. The user never sees the chart; the app crashes before anything is displayed, creating a complete crash loop on every launch.
The issue is 100% reproducible on Xiaomi Redmi 9C NFC (Android 10), but does not occur on other Android 10 devices with Adreno GPUs (e.g. Redmi Note 9).
This appears to be the same root cause as #3156 — a failure in gl::Context::makeCurrent on PowerVR drivers, leading to a null pointer when Skia attempts to initialize the OpenGL ES context.
Versions
@shopify/react-native-skia: 2.4.21
- React Native: 0.79.6
- React: 19.0.0
- Expo SDK: ~53.0.27
- Hermes: enabled
- New Architecture (Fabric): enabled
- compileSdk / targetSdk: 35
- Android version: Android 10 (API 29)
Affected Devices
- Xiaomi Redmi 9C / 9C NFC (MediaTek Helio G35, PowerVR GE8320, 2–3 GB RAM)
- Xiaomi Redmi 9A (Helio G25)
- Oppo A15 / A15S (Helio P35)
- Realme C11 / C12 / C15 (Helio G35)
All running Android 10 with PowerVR GPU.
Crash Log (Firebase Crashlytics)
Crashed: Thread: SIGSEGV 0x0000000000000004
#00 pc 0x18017c librnskia.so
#1 pc 0x230547 librnskia.so
#15 pc 0x185415 librnskia.so
#16 pc 0x17f0dd librnskia.so
#21 pc 0x17ef57 librnskia.so
#22 pc 0x17eacb librnskia.so
#23 pc 0x184073 librnskia.so
#24 pc 0x72b846 librnskia.so
#25 pc 0x74e1be librnskia.so
#26 pc 0x74557e librnskia.so
#27 pc 0x184461 librnskia.so
#28 pc 0x18442f librnskia.so
#29 pc 0x1843e9 librnskia.so
#37 pc 0x97122 libsrv_um.so ← PowerVR GPU usermode driver
Suggestion
Would it be possible to add a runtime check inside react-native-skia itself - detecting PowerVR / broken GL context and either:
Falling back to a software Skia backend (CPU rasterizer) instead of GPU
Exposing an isSkiaAvailable() API so app developers can detect this without hardcoding device lists
Catching the GL context creation failure gracefully instead of segfaulting
I'm experiencing a consistent native crash SIGSEGV (null pointer dereference at 0x0000000000000004) in
librnskia.soon low-end Android 10 devices with PowerVR GE8320 GPU (MediaTek Helio G35/G25 SoC).The crash occurs immediately when the first
<Canvas>component tries to render — in my case, a simple temperature chart using<Path>,<Circle>, and<LinearGradient>. The user never sees the chart; the app crashes before anything is displayed, creating a complete crash loop on every launch.The issue is 100% reproducible on Xiaomi Redmi 9C NFC (Android 10), but does not occur on other Android 10 devices with Adreno GPUs (e.g. Redmi Note 9).
This appears to be the same root cause as #3156 — a failure in
gl::Context::makeCurrenton PowerVR drivers, leading to a null pointer when Skia attempts to initialize the OpenGL ES context.Versions
@shopify/react-native-skia: 2.4.21Affected Devices
All running Android 10 with PowerVR GPU.
Crash Log (Firebase Crashlytics)
Crashed: Thread: SIGSEGV 0x0000000000000004
#00 pc 0x18017c librnskia.so
#1 pc 0x230547 librnskia.so
#15 pc 0x185415 librnskia.so
#16 pc 0x17f0dd librnskia.so
#21 pc 0x17ef57 librnskia.so
#22 pc 0x17eacb librnskia.so
#23 pc 0x184073 librnskia.so
#24 pc 0x72b846 librnskia.so
#25 pc 0x74e1be librnskia.so
#26 pc 0x74557e librnskia.so
#27 pc 0x184461 librnskia.so
#28 pc 0x18442f librnskia.so
#29 pc 0x1843e9 librnskia.so
#37 pc 0x97122 libsrv_um.so ← PowerVR GPU usermode driver
Suggestion
Would it be possible to add a runtime check inside react-native-skia itself - detecting PowerVR / broken GL context and either:
Falling back to a software Skia backend (CPU rasterizer) instead of GPU
Exposing an isSkiaAvailable() API so app developers can detect this without hardcoding device lists
Catching the GL context creation failure gracefully instead of segfaulting