You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We are using React Native WebRTC and getting a native crash on certain Android devices.
iOS / other Android devices do not experience this error but it is consistently happening for particular devices - mostly on flagship Samsung devices (e.g. Samsung Galaxy S24 Ultra) / Snapdragon processors. Oddly, older Samsung devices (e.g. Samsung A13 5G) cannot replicate.
We are following the LiveKit React Native basic implementation guides.
Environment
React Native: 0.81.5
React: 19.1.0
Expo: 54.0.30
livekit-client: 2.17.2
@livekit/react-native: 2.9.6
@livekit/react-native-webrtc: 137.0.2
@livekit/react-native-expo-plugin: 1.0.1
Room / usage pattern
This is a fairly large room style session:
Testing with 100-150+ participants, about half of which have cameras on. One participant has audio on (the host).
participants shown in a FlashList video 2 column grid, with ~6 cameras on screen at a time depending on screen dimensions
autoSubscribe is disabled
we selectively subscribe to visible participant cameras only + a small buffer (maximum 10)
off-screen subscribed tracks are temporarily setEnabled(false)
after scroll idle + 5s timeout, non-visible tracks are setSubscribed(false) - this is not serialised (as fresh subscriptions are).
We suspected that scrolling would create too many fresh subscriptions at once so we implemented the following:
increasing viewability threshold + minimum dwell time
removing duplicate subscription decisions from trackPublished
serialising fresh camera subscriptions one at a time with a 250ms delay to prevent excessive subscription negotiations all at once
Stack Trace:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 19739 >>> com.my.app <<<
backtrace:
#00 pc 0x000000000005c900 /apex/com.android.runtime/lib64/bionic/libc.so (abort+172)
#01 pc 0x00000000004874f8 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#02 pc 0x0000000000487c6c /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#03 pc 0x0000000000486d70 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#04 pc 0x00000000005145f0 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#05 pc 0x000000000067978c /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#06 pc 0x00000000009db314 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#07 pc 0x00000000009d8c48 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#08 pc 0x00000000009d89dc /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#09 pc 0x00000000009e6b00 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#10 pc 0x0000000000a0f1d8 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#11 pc 0x0000000000a0efd4 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#12 pc 0x0000000000a0ffa4 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#13 pc 0x0000000000690900 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#14 pc 0x00000000004956ec /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#15 pc 0x00000000004955d8 /data/app/~~eujHXOgig9B0LQZ-f2Yt7w==/com.my.app-NDB1TjS2Tc-k1X6ZHzx1BQ==/split_config.arm64_v8a.apk!libjingle_peerconnection_so.so (BuildId: efbcc64c7abc4d17)
#16 pc 0x000000000006d8bc /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+196)
#17 pc 0x000000000005fd1c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68)
Problem
I'm assuming that the above stack is not helpful because it is stripped, any advice on how to get a more helpful strack trace would be appreciated:
The WebRTC .so pulled in via io.github.webrtc-sdk:android (as declared by this project’s Android build.gradle) is stripped.
ndk-stack (and similar) does not resolve frames inside that library - BuildId matches the AAR, but there is no published companion unstripped / debug-symbol artifact we can point tools at.
JS tooling (Metro / source maps) does not apply; this is purely native.
From this project’s side: document (README or docs) the recommended way to symbolicate native crashes that land in libjingle_peerconnection_so.so for integrators who only consume the Maven prebuilt — or explicitly state that symbols are not available and crashes there should be reported upstream with version + BuildId.
If feasible: coordinate unstripped or debug-symbol artifacts for the exact webrtc-sdk versions this line depends on (or expose an optional Gradle variant / documented Gradle property that pulls symbolized builds), so production crashes become debuggable.
If this pattern (abort, stack mostly in libjingle_peerconnection_so.so) matches a known issue or fixed version, please point me to release notes / upgrade path.
Any guidance is much appreciated! Thanks for your time
If helpful, I've attached a video of the crash happening on a Samsung Galaxy S24 Ultra. This kind of behaviour is observed multiple times in a session.
Context
We are using React Native WebRTC and getting a native crash on certain Android devices.
iOS / other Android devices do not experience this error but it is consistently happening for particular devices - mostly on flagship Samsung devices (e.g. Samsung Galaxy S24 Ultra) / Snapdragon processors. Oddly, older Samsung devices (e.g. Samsung A13 5G) cannot replicate.
We are following the LiveKit React Native basic implementation guides.
Environment
Room / usage pattern
This is a fairly large room style session:
participants shown in a FlashList video 2 column grid, with ~6 cameras on screen at a time depending on screen dimensions
autoSubscribe is disabled
We suspected that scrolling would create too many fresh subscriptions at once so we implemented the following:
Stack Trace:
Problem
I'm assuming that the above stack is not helpful because it is stripped, any advice on how to get a more helpful strack trace would be appreciated:
The WebRTC .so pulled in via io.github.webrtc-sdk:android (as declared by this project’s Android build.gradle) is stripped.
ndk-stack (and similar) does not resolve frames inside that library - BuildId matches the AAR, but there is no published companion unstripped / debug-symbol artifact we can point tools at.
JS tooling (Metro / source maps) does not apply; this is purely native.
From this project’s side: document (README or docs) the recommended way to symbolicate native crashes that land in libjingle_peerconnection_so.so for integrators who only consume the Maven prebuilt — or explicitly state that symbols are not available and crashes there should be reported upstream with version + BuildId.
If feasible: coordinate unstripped or debug-symbol artifacts for the exact webrtc-sdk versions this line depends on (or expose an optional Gradle variant / documented Gradle property that pulls symbolized builds), so production crashes become debuggable.
If this pattern (abort, stack mostly in libjingle_peerconnection_so.so) matches a known issue or fixed version, please point me to release notes / upgrade path.
Any guidance is much appreciated! Thanks for your time
If helpful, I've attached a video of the crash happening on a Samsung Galaxy S24 Ultra. This kind of behaviour is observed multiple times in a session.
20260324_204345.mp4