Open MFazio23 opened 3 weeks ago
Hey @MFazio23, looking at the stack, it looks like it hasn't been symbolicated properly, which is why the stack trace doesn't make sense, and so many frames are annotated with that one function.
Take a look at the steps here to get a proper stack trace: https://github.com/facebook/hermes/blob/main/doc/ReactNativeIntegration.md#react-native--071
Thanks @neildhar - I did this before but I'll give it another shot because it looks like I got something wrong.
We updated our app to use 0.73.6
(with plans for 0.74.x
coming up), and the stack traces have changed (see below for an example), but the errors seem to be coming up just as frequently.
The stack trace was symbolicated by Sentry for us automatically, but when I uploaded the debug symbols to Crashlytics before, they were showing the same stack trace as Sentry.
With the doc linked above, I'm still confused by "you can just invoke ndk-stack
and [it] will just work" - the ndk-stack
command expects a symbol directory, so where does that come from?
OS Version: Android 12 (S3RDES32.123-37-5-11)
Report Version: 104
Exception Type: Unknown (SIGSEGV)
Application Specific Information:
Segfault
Thread 0 Crashed:
0 split_config.arm64_v8a.apk 0x6f8acc8bcc facebook::hermes::HermesRuntime::~HermesRuntime
1 split_config.arm64_v8a.apk 0x6f8ac953e8 facebook::hermes::HermesRuntime::~HermesRuntime
2 split_config.arm64_v8a.apk 0x6f8ad3c430 facebook::hermes::HermesRuntime::~HermesRuntime
3 split_config.arm64_v8a.apk 0x6f8ad3ba8c facebook::hermes::HermesRuntime::~HermesRuntime
4 split_config.arm64_v8a.apk 0x6f8ad3ae20 facebook::hermes::HermesRuntime::~HermesRuntime
5 split_config.arm64_v8a.apk 0x6f8ad3dcd0 facebook::hermes::HermesRuntime::~HermesRuntime
6 split_config.arm64_v8a.apk 0x6f8ad3abc8 facebook::hermes::HermesRuntime::~HermesRuntime
7 split_config.arm64_v8a.apk 0x6f8ad3d290 facebook::hermes::HermesRuntime::~HermesRuntime
8 split_config.arm64_v8a.apk 0x6f8ace8294 facebook::hermes::HermesRuntime::~HermesRuntime
9 split_config.arm64_v8a.apk 0x6f8ace5890 facebook::hermes::HermesRuntime::~HermesRuntime
10 split_config.arm64_v8a.apk 0x6f8acafcc0 facebook::hermes::HermesRuntime::~HermesRuntime
11 split_config.arm64_v8a.apk 0x6f8acece40 facebook::hermes::HermesRuntime::~HermesRuntime
12 split_config.arm64_v8a.apk 0x6f8ac8f93c facebook::hermes::HermesRuntime::~HermesRuntime
13 split_config.arm64_v8a.apk 0x6f8aca0464 facebook::hermes::HermesRuntime::~HermesRuntime
14 split_config.arm64_v8a.apk 0x6f8aca1c9c facebook::hermes::HermesRuntime::~HermesRuntime
15 split_config.arm64_v8a.apk 0x6f8aca14ac facebook::hermes::HermesRuntime::~HermesRuntime
16 split_config.arm64_v8a.apk 0x6f8ac8fa4c facebook::hermes::HermesRuntime::~HermesRuntime
17 split_config.arm64_v8a.apk 0x6f8ad0a854 facebook::hermes::HermesRuntime::~HermesRuntime
18 split_config.arm64_v8a.apk 0x6f8ac8f93c facebook::hermes::HermesRuntime::~HermesRuntime
19 split_config.arm64_v8a.apk 0x6f8acaa92c facebook::hermes::HermesRuntime::~HermesRuntime
20 split_config.arm64_v8a.apk 0x6f8aca1f4c facebook::hermes::HermesRuntime::~HermesRuntime
21 split_config.arm64_v8a.apk 0x6f8aca14ac facebook::hermes::HermesRuntime::~HermesRuntime
22 split_config.arm64_v8a.apk 0x6f8ac8fa4c facebook::hermes::HermesRuntime::~HermesRuntime
23 split_config.arm64_v8a.apk 0x6f8ac8eb30 facebook::hermes::HermesRuntime::~HermesRuntime
24 split_config.arm64_v8a.apk 0x6f8ad26b40 facebook::hermes::HermesRuntime::~HermesRuntime
25 split_config.arm64_v8a.apk 0x6f8ac8f93c facebook::hermes::HermesRuntime::~HermesRuntime
26 split_config.arm64_v8a.apk 0x6f8aca0464 facebook::hermes::HermesRuntime::~HermesRuntime
27 split_config.arm64_v8a.apk 0x6f8aca1c9c facebook::hermes::HermesRuntime::~HermesRuntime
28 split_config.arm64_v8a.apk 0x6f8aca14ac facebook::hermes::HermesRuntime::~HermesRuntime
29 split_config.arm64_v8a.apk 0x6f8ac8fa4c facebook::hermes::HermesRuntime::~HermesRuntime
30 split_config.arm64_v8a.apk 0x6f8ad26dc0 facebook::hermes::HermesRuntime::~HermesRuntime
31 split_config.arm64_v8a.apk 0x6f8ac8f93c facebook::hermes::HermesRuntime::~HermesRuntime
32 split_config.arm64_v8a.apk 0x6f8ad0a854 facebook::hermes::HermesRuntime::~HermesRuntime
33 split_config.arm64_v8a.apk 0x6f8ac8f93c facebook::hermes::HermesRuntime::~HermesRuntime
34 split_config.arm64_v8a.apk 0x6f8acaa92c facebook::hermes::HermesRuntime::~HermesRuntime
35 split_config.arm64_v8a.apk 0x6f8aca1f4c facebook::hermes::HermesRuntime::~HermesRuntime
36 split_config.arm64_v8a.apk 0x6f8aca14ac facebook::hermes::HermesRuntime::~HermesRuntime
37 split_config.arm64_v8a.apk 0x6f8ac8fa4c facebook::hermes::HermesRuntime::~HermesRuntime
38 split_config.arm64_v8a.apk 0x6f8ac8eb30 facebook::hermes::HermesRuntime::~HermesRuntime
39 split_config.arm64_v8a.apk 0x6f8ad26b40 facebook::hermes::HermesRuntime::~HermesRuntime
40 split_config.arm64_v8a.apk 0x6f8ac8f93c facebook::hermes::HermesRuntime::~HermesRuntime
41 split_config.arm64_v8a.apk 0x6f8aca0464 facebook::hermes::HermesRuntime::~HermesRuntime
42 split_config.arm64_v8a.apk 0x6f8aca1c9c facebook::hermes::HermesRuntime::~HermesRuntime
43 split_config.arm64_v8a.apk 0x6f8aca14ac facebook::hermes::HermesRuntime::~HermesRuntime
44 split_config.arm64_v8a.apk 0x6f8ac8fa4c facebook::hermes::HermesRuntime::~HermesRuntime
45 split_config.arm64_v8a.apk 0x6f8ac8f5e4 facebook::hermes::HermesRuntime::~HermesRuntime
46 split_config.arm64_v8a.apk 0x6f8ac82630 facebook::jsi::Array::setValueAtIndex<T>
47 split_config.arm64_v8a.apk 0x6f8a86edc0 facebook::jsi::Function::call<T>
48 split_config.arm64_v8a.apk 0x6f8a86ec30 folly::to_ascii_with<T>
49 split_config.arm64_v8a.apk 0x6f8a866380 std::__ndk1::__function::__func<T>::operator()
50 split_config.arm64_v8a.apk 0x6f8a86b96c facebook::react::JSIExecutor::callFunction
51 split_config.arm64_v8a.apk 0x6f8a966a3c facebook::react::JsToNativeBridge::callSerializableNativeHook
52 split_config.arm64_v8a.apk 0x6f8a9679f4 facebook::react::JsToNativeBridge::callSerializableNativeHook
53 split_config.arm64_v8a.apk 0x6f8a93cc18 facebook::react::JMessageQueueThread::~JMessageQueueThread
54 split_config.arm64_v8a.apk 0x6f9309deb0 facebook::jni::detail::MethodWrapper<T>::dispatch
55 split_config.arm64_v8a.apk 0x6f9309de00 facebook::jni::detail::FunctionWrapper<T>::call
56 base.odex 0x6fbc55c6c4 <unknown> + 479901107908
you can just invoke ndk-stack and [it] will just work
cc @cortinico who is the expert on the intended workflow here.
That said, you can also download the symbols directly from maven: https://repo1.maven.org/maven2/com/facebook/react/hermes-android/
With the doc linked above, I'm still confused by "you can just invoke
ndk-stack
and [it] will just work" - thendk-stack
command expects a symbol directory, so where does that come from?
You'll have to point to your app build folder like:
adb logcat | $ANDROID_HOME/ndk/26.1.10909125/ndk-stack -sym android/app/build/intermediates/cmake/debug/obj/arm64-v8a
Also there was a sporadic bug with ndk-stack
in NDK 26 (https://github.com/android/ndk/issues/1993) which was resolved in NDK 27, which we sadly haven't bumped yet.
Bug Description
We have a massive (15K) amount of crashes in our production React Native Android app which are shown to end in the
breakpointResolved
function inside Hermes.This crash occurs ~90% of the time on Motorola devices, though we've seen it a slight bit on other devices like Samsungs and Pixels.
It is also happening all over our app without a clear pattern as to something in particular causing it.
gradle clean
and confirmed this bug does not occur with JSCHermes git revision (if applicable): N/A React Native version: 0.72.1 OS: Android Platform (most likely one of arm64-v8a, armeabi-v7a, x86, x86_64): arm64_v8a
Stack trace
Steps To Reproduce
We have yet to reproduce this on our side and are going off of multiple crash/app health apps (Sentry/Crashlytics) to let us know this is happening. We've tested dev and production builds on lots of devices (including the most common Motorola device in the list) without seeing anything.
The Expected Behavior
The app does not crash.