Skip to content

Crash: SIGABRT in findHeaderHeight #2286

@janicduplessis

Description

@janicduplessis

Description

I am getting the following crash currently in production. Sadly I do not have a way to repro it.

OS Version: Android 14 (AP1A.240305.019.A1)
Report Version: 104

Exception Type: Unknown (SIGABRT)

Application Specific Information:
Abort

Thread 0 Crashed:
0   libc.so                         0x7ed5ab8e74        abort
1   libart.so                       0x7c0f371c60        art::Runtime::Abort
2   libbase.so                      0x7ec1cf57d0        <unknown> + 544417470416
3   libbase.so                      0x7ec1cf4d58        android::base::LogMessage::~LogMessage
4   libart.so                       0x7c0ee5ae28        art::ClassLinker::FindClass
5   libart.so                       0x7c0f154cc0        <unknown> + 532828998848
6   split_config.arm64_v8a.apk      0x7ac7f71034        [inlined] _JNIEnv::FindClass (jni.h:503)
7   split_config.arm64_v8a.apk      0x7ac7f71034        facebook::react::RNSScreenComponentDescriptor::findHeaderHeight (RNSScreenComponentDescriptor.h:133)
8   split_config.arm64_v8a.apk      0x7ac7f6f298        facebook::react::RNSScreenComponentDescriptor::adopt (RNSScreenComponentDescriptor.h:89)
9   split_config.arm64_v8a.apk      0x7ac7f6e9d0        facebook::react::ConcreteComponentDescriptor<T>::cloneShadowNode (ConcreteComponentDescriptor.h:82)
10  split_config.arm64_v8a.apk      0x7ad4094508        facebook::react::YogaLayoutableShadowNode::adoptYogaChild (YogaLayoutableShadowNode.cpp:216)
11  split_config.arm64_v8a.apk      0x7ad4093b4c        facebook::react::YogaLayoutableShadowNode::updateYogaChildren (YogaLayoutableShadowNode.cpp:354)
12  split_config.arm64_v8a.apk      0x7ad4094074        facebook::react::YogaLayoutableShadowNode::YogaLayoutableShadowNode (YogaLayoutableShadowNode.cpp:156)
13  split_config.arm64_v8a.apk      0x7ac7f6a4b0        [inlined] facebook::react::ConcreteShadowNode<T>::YogaLayoutableShadowNode (ConcreteShadowNode.h:46)
14  split_config.arm64_v8a.apk      0x7ac7f6a4b0        [inlined] facebook::react::ConcreteViewShadowNode<T>::ConcreteViewShadowNode (ConcreteViewShadowNode.h:66)
15  split_config.arm64_v8a.apk      0x7ac7f6a4b0        [inlined] std::__ndk1::construct_at[abi:v170000]<T> (construct_at.h:38)
16  split_config.arm64_v8a.apk      0x7ac7f6a4b0        [inlined] std::__ndk1::allocator_traits<T>::construct[abi:v170000]<T> (allocator_traits.h:304)
17  split_config.arm64_v8a.apk      0x7ac7f6a4b0        [inlined] std::__ndk1::__shared_ptr_emplace<T>::__shared_ptr_emplace[abi:v170000]<T> (shared_ptr.h:277)
18  split_config.arm64_v8a.apk      0x7ac7f6a4b0        [inlined] std::__ndk1::allocate_shared[abi:v170000]<T> (shared_ptr.h:948)
19  split_config.arm64_v8a.apk      0x7ac7f6a4b0        [inlined] std::__ndk1::make_shared[abi:v170000]<T> (shared_ptr.h:957)
20  split_config.arm64_v8a.apk      0x7ac7f6a4b0        facebook::react::ConcreteComponentDescriptor<T>::cloneShadowNode (ConcreteComponentDescriptor.h:80)
21  split_config.arm64_v8a.apk      0x79db2d4c38        reanimated::cloneShadowTreeWithNewProps (ShadowTreeCloner.cpp:56)
22  split_config.arm64_v8a.apk      0x79db2d427c        [inlined] reanimated::ReanimatedCommitHook::shadowTreeWillCommit::lambda::operator() (ReanimatedCommitHook.cpp:48)
23  split_config.arm64_v8a.apk      0x79db2d427c        [inlined] std::__ndk1::__invoke[abi:v170000]<T> (invoke.h:394)
24  split_config.arm64_v8a.apk      0x79db2d427c        [inlined] std::__ndk1::__invoke_void_return_wrapper<T>::__call<T> (invoke.h:487)
25  split_config.arm64_v8a.apk      0x79db2d427c        [inlined] std::__ndk1::__function::__alloc_func<T>::operator()[abi:v170000] (function.h:185)
26  split_config.arm64_v8a.apk      0x79db2d427c        std::__ndk1::__function::__func<T>::operator() (function.h:356)
27  split_config.arm64_v8a.apk      0x79db2d2810        [inlined] std::__ndk1::__function::__value_func<T>::operator()[abi:v170000] (function.h:510)
28  split_config.arm64_v8a.apk      0x79db2d2810        [inlined] std::__ndk1::function<T>::operator() (function.h:1156)
29  split_config.arm64_v8a.apk      0x79db2d2810        reanimated::PropsRegistry::for_each (PropsRegistry.cpp:31)
30  split_config.arm64_v8a.apk      0x79db2d3f8c        reanimated::ReanimatedCommitHook::shadowTreeWillCommit (ReanimatedCommitHook.cpp:45)
31  split_config.arm64_v8a.apk      0x7acfd8cc10        facebook::react::UIManager::shadowTreeWillCommit (UIManager.cpp:694)
32  split_config.arm64_v8a.apk      0x7acfd75fa8        facebook::react::ShadowTree::tryCommit (ShadowTree.cpp:414)
33  split_config.arm64_v8a.apk      0x7acfd75cbc        facebook::react::ShadowTree::commit (ShadowTree.cpp:360)
34  split_config.arm64_v8a.apk      0x7acfd8d1ec        [inlined] const::lambda::operator() (UIManager.cpp:170)
35  split_config.arm64_v8a.apk      0x7acfd8d1ec        [inlined] std::__ndk1::__invoke[abi:v170000]<T> (invoke.h:394)
36  split_config.arm64_v8a.apk      0x7acfd8d1ec        [inlined] std::__ndk1::__invoke_void_return_wrapper<T>::__call<T> (invoke.h:487)
37  split_config.arm64_v8a.apk      0x7acfd8d1ec        [inlined] std::__ndk1::__function::__alloc_func<T>::operator()[abi:v170000] (function.h:185)
38  split_config.arm64_v8a.apk      0x7acfd8d1ec        std::__ndk1::__function::__func<T>::operator() (function.h:356)
39  split_config.arm64_v8a.apk      0x7acfd74578        [inlined] std::__ndk1::__function::__value_func<T>::operator()[abi:v170000] (function.h:510)
40  split_config.arm64_v8a.apk      0x7acfd74578        [inlined] std::__ndk1::function<T>::operator() (function.h:1156)
41  split_config.arm64_v8a.apk      0x7acfd74578        facebook::react::ShadowTreeRegistry::visit (ShadowTreeRegistry.cpp:50)
42  split_config.arm64_v8a.apk      0x7acfd8a904        facebook::react::UIManager::completeSurface (UIManager.cpp:169)
43  split_config.arm64_v8a.apk      0x7acfd9a310        [inlined] facebook::react::UIManagerBinding::get::lambda::operator() (UIManagerBinding.cpp:506)
44  split_config.arm64_v8a.apk      0x7acfd9a310        [inlined] std::__ndk1::__invoke[abi:v170000]<T> (invoke.h:394)
45  split_config.arm64_v8a.apk      0x7acfd9a310        [inlined] std::__ndk1::__invoke_void_return_wrapper<T>::__call<T> (invoke.h:478)
46  split_config.arm64_v8a.apk      0x7acfd9a310        [inlined] std::__ndk1::__function::__alloc_func<T>::operator()[abi:v170000] (function.h:185)
47  split_config.arm64_v8a.apk      0x7acfd9a310        std::__ndk1::__function::__func<T>::operator() (function.h:356)
48  split_config.arm64_v8a.apk      0x7ab4a72070        facebook::jsi::Runtime::PointerValue::~PointerValue
49  split_config.arm64_v8a.apk      0x7ab4a71cd0        facebook::jsi::Runtime::PointerValue::~PointerValue
50  split_config.arm64_v8a.apk      0x7ab4a787b8        facebook::hermes::HermesRuntime::~HermesRuntime
51  split_config.arm64_v8a.apk      0x7ab4a88a40        std::__ndk1::random_device::random_device
52  split_config.arm64_v8a.apk      0x7ab4a8a3f4        std::__ndk1::random_device::random_device
53  split_config.arm64_v8a.apk      0x7ab4a89aac        std::__ndk1::random_device::random_device
54  split_config.arm64_v8a.apk      0x7ab4a788c8        facebook::hermes::HermesRuntime::~HermesRuntime
55  split_config.arm64_v8a.apk      0x7ab4a6a0ec        facebook::jsi::Array::setValueAtIndex<T>
56  split_config.arm64_v8a.apk      0x7acfd6ef00        [inlined] facebook::jsi::Function::call (jsi-inl.h:264)
57  split_config.arm64_v8a.apk      0x7acfd6ef00        [inlined] facebook::jsi::Function::call (jsi-inl.h:269)
58  split_config.arm64_v8a.apk      0x7acfd6ef00        facebook::react::Task::execute (Task.cpp:45)
59  split_config.arm64_v8a.apk      0x7acfd6d394        facebook::react::RuntimeScheduler_Modern::executeMacrotask (RuntimeScheduler_Modern.cpp:330)
60  split_config.arm64_v8a.apk      0x7acfd6d288        facebook::react::RuntimeScheduler_Modern::executeTask (RuntimeScheduler_Modern.cpp:291)
61  split_config.arm64_v8a.apk      0x7acfd6cf00        facebook::react::RuntimeScheduler_Modern::startWorkLoop (RuntimeScheduler_Modern.cpp:242)
62  split_config.arm64_v8a.apk      0x7ab8fc3110        std::__ndk1::__shared_ptr_emplace<T>::__on_zero_shared_weak
63  split_config.arm64_v8a.apk      0x7ad41932c4        facebook::react::JMessageQueueThread::~JMessageQueueThread
64  split_config.arm64_v8a.apk      0x7aeaba7804        [inlined] std::__ndk1::__function::__value_func<T>::operator()[abi:v170000] (function.h:510)
65  split_config.arm64_v8a.apk      0x7aeaba7804        [inlined] std::__ndk1::function<T>::operator() (function.h:1156)
66  split_config.arm64_v8a.apk      0x7aeaba7804        [inlined] facebook::jni::JNativeRunnable::run (NativeRunnable.h:44)
67  split_config.arm64_v8a.apk      0x7aeaba7804        facebook::jni::detail::MethodWrapper<T>::dispatch (Registration-inl.h:129)
68  split_config.arm64_v8a.apk      0x7aeaba7744        [inlined] facebook::jni::detail::CallWithJniConversions<T>::call (Registration-inl.h:66)
69  split_config.arm64_v8a.apk      0x7aeaba7744        facebook::jni::detail::FunctionWrapper<T>::call (Registration-inl.h:95)
70  base.odex                       0x7afce51194        <unknown> + 528228880788

I suspect that the code is executed on a thread that is not attached to the jvm class loader. I am currently deploying a patch that wraps that code with jni::ThreadScope::WithClassLoader to see if the crash stops.

Steps to reproduce

N/A

Snack or a link to a repository

N/A

Screens version

3.33.0

React Native version

0.74.3

Platforms

Android

JavaScript runtime

Hermes

Workflow

React Native (without Expo)

Architecture

Fabric (New Architecture)

Build type

Release mode

Device

Real device

Device model

Pixel 8 (AP1A.240305.019.A1) (Android 14)

Acknowledgements

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    Missing reproThis issue need minimum repro scenarioPlatform: AndroidThis issue is specific to Android

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions