react-native-reanimated icon indicating copy to clipboard operation
react-native-reanimated copied to clipboard

[iOS Crash] EXC_BAD_ACCESS in folly::dynamic::hash() via ShadowNode clone — intermittent crash on Reanimated 3.17.1

Open Nagoorkani27 opened this issue 5 months ago • 3 comments
trafficstars

Description

Description

I’m encountering an intermittent crash on iOS when running my React Native app using react-native-reanimated. The crash doesn't happen consistently, but it occurs occasionally during normal usage. It seems related to the native folly::dynamic::hash() call via ShadowNode::clone().

This crash occurs on real iOS devices.

Stack Trace Screenshot

Please find the crash log screenshot below:

Crash Screenshot

Key lines: EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000 folly::dynamic::hash() const + 490 ShadowNode::clone(facebook::react::ShadowNodeFragment const&) + 144 reanimated::cloneShadowTreeWithNewPropsRecursive(...)

Image Image Image

Steps to reproduce

EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000 folly::dynamic::hash() const + 490 ShadowNode::clone(facebook::react::ShadowNodeFragment const&) + 144 reanimated::cloneShadowTreeWithNewPropsRecursive(...)

  • This seems to be a native-level crash related to folly::dynamic being used as a key in an unordered map.
  • I’m not directly using folly, but I believe it's used internally by Reanimated or React Native core.
  • I suspect a null or improperly initialized dynamic value may be passed during ShadowNode cloning.

Reanimated Setup

  • Reanimated plugin added in babel.config.js
  • Ran npx react-native-reanimated patch
  • Linked properly with CocoaPods (pod install done)

What I've Tried

  • Cleaned build: npx react-native-clean, xcodebuild clean
  • Rebuilt the app multiple times
  • Crash still happens occasionally, only on iOS, not Android

Additional Notes

  • This seems to be a native-level crash related to folly::dynamic being used as a key in an unordered map.
  • I’m not directly using folly, but I believe it's used internally by Reanimated or React Native core.
  • I suspect a null or improperly initialized dynamic value may be passed during ShadowNode cloning.

Request

Please let me know:

  • If this is a known issue
  • Any workaround or patch
  • If I can provide a minimal repro (currently it's hard to reproduce consistently)

Snack or a link to a repository

This issue occurs intermittently on a real iOS device and involves a crash inside native code (folly::dynamic::hash() via ShadowNode::clone). Since the crash involves React Native Fabric internals triggered via react-native-reanimated, it cannot be reproduced in Snack (which does not support native modules or Hermes). Due to the native nature and randomness of this crash, creating a minimal reproduction repo is extremely difficult. However, I’ve attached the crash log screenshot and full environment info to help with investigation.

Reanimated version

^3.17.1

React Native version

0.79.1

Platforms

iOS

JavaScript runtime

None

Workflow

React Native

Architecture

Fabric (New Architecture)

Build type

Debug app & production bundle, Release app & production bundle

Device

Real device, iOS simulator

Host machine

macOS

Device model

iphone 12 , iphone 6s, iphone 7

Acknowledgements

Yes

Nagoorkani27 avatar Jun 17 '25 07:06 Nagoorkani27

Hey! 👋

The issue doesn't seem to contain a minimal reproduction.

Could you provide a snack or a link to a GitHub repository under your username that reproduces the problem?

github-actions[bot] avatar Jun 17 '25 07:06 github-actions[bot]

Hey! 👋

It looks like you've omitted a few important sections from the issue template.

Please complete Description section.

github-actions[bot] avatar Jun 17 '25 07:06 github-actions[bot]

Due to the intermittent and native-only nature of the issue, a consistent reproduction is difficult, but here’s what generally happens:

Start the app (with Hermes enabled and using Reanimated 3.17.1)

Navigate between screens that use animated components

Occasionally, the app crashes with a native EXC_BAD_ACCESS in folly::dynamic::hash()

I’ve tried cleaning builds, patching Reanimated, checking for undefined animated props, and verifying proper Reanimated setup — but the crash persists.

EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000
folly::dynamic::hash()
facebook::react::ShadowNode::clone(...)
reanimated::cloneShadowTreeWithNewPropsRecursive(...)

System: OS: macOS CPU: Apple Silicon (M4) Xcode: 16.2

Packages: react: 19.0.0 react-native: 0.79.1 react-native-reanimated: 3.17.1 hermes-engine: enabled

Nagoorkani27 avatar Jun 17 '25 07:06 Nagoorkani27

We're hitting the same issue, affecting ~1 in 10 users. We also have no reliable way to reproduce it so we're currently looking into automating the behavior the seems to cause it in the iOS Simulator (where it also happens), and seeing if ASAN / TSAN provide any additional information.

Here's the relevant callstack from the one time we've managed to catch this in the debugger so far:

EXC_BAD_ACCESS
#0	0x0000000100745a98 in folly::dynamic::hash [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/json/dynamic-inl.h:490
#1	0x0000000100745a98 in folly::dynamic::hash at /app/ios/Pods/RCT-Folly/folly/json/dynamic.cpp:337
#2	0x00000001007473bc in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__emplace_unique_key_args<folly::dynamic, std::__1::pair<folly::dynamic const, folly::dynamic> const&> [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/json/dynamic-inl.h:36
#3	0x00000001007473b4 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__emplace_unique_key_args<folly::dynamic, std::__1::pair<folly::dynamic const, folly::dynamic> const&> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/unordered_map:647
#4	0x00000001007473b4 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__emplace_unique_key_args<folly::dynamic, std::__1::pair<folly::dynamic const, folly::dynamic> const&> at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__hash_table:1477
#5	0x000000010074735c in std::__1::unordered_map<folly::dynamic, folly::dynamic, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, std::__1::allocator<std::__1::pair<folly::dynamic const, folly::dynamic>>>::unordered_map [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__hash_table:821
#6	0x0000000100747350 in std::__1::unordered_map<folly::dynamic, folly::dynamic, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, std::__1::allocator<std::__1::pair<folly::dynamic const, folly::dynamic>>>::unordered_map [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/unordered_map:1732
#7	0x0000000100747348 in std::__1::unordered_map<folly::dynamic, folly::dynamic, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, std::__1::allocator<std::__1::pair<folly::dynamic const, folly::dynamic>>>::unordered_map at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/unordered_map:1658
#8	0x0000000100745050 in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/container/detail/F14MapFallback.h:42
#9	0x000000010074504c in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/container/detail/F14MapFallback.h:650
#10	0x000000010074504c in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/json/dynamic-inl.h:170
#11	0x000000010074504c in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/json/dynamic-inl.h:170
#12	0x000000010074504c in folly::dynamic::dynamic at /app/ios/Pods/RCT-Folly/folly/json/dynamic.cpp:136
#13	0x0000000100747258 in std::__1::__uninitialized_allocator_copy_impl[abi:ne180100]<std::__1::allocator<folly::dynamic>, folly::dynamic*, folly::dynamic*, folly::dynamic*> [inlined] at /app/ios/Pods/RCT-Folly/folly/json/dynamic.cpp:134
#14	0x0000000100747250 in std::__1::__uninitialized_allocator_copy_impl[abi:ne180100]<std::__1::allocator<folly::dynamic>, folly::dynamic*, folly::dynamic*, folly::dynamic*> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/construct_at.h:41
#15	0x0000000100747250 in std::__1::__uninitialized_allocator_copy_impl[abi:ne180100]<std::__1::allocator<folly::dynamic>, folly::dynamic*, folly::dynamic*, folly::dynamic*> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/construct_at.h:49
#16	0x0000000100747250 in std::__1::__uninitialized_allocator_copy_impl[abi:ne180100]<std::__1::allocator<folly::dynamic>, folly::dynamic*, folly::dynamic*, folly::dynamic*> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/allocator_traits.h:305
#17	0x0000000100747250 in std::__1::__uninitialized_allocator_copy_impl[abi:ne180100]<std::__1::allocator<folly::dynamic>, folly::dynamic*, folly::dynamic*, folly::dynamic*> at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/uninitialized_algorithms.h:550
#18	0x0000000100747158 in std::__1::vector<folly::dynamic, std::__1::allocator<folly::dynamic>>::__init_with_size[abi:ne180100]<folly::dynamic*, folly::dynamic*> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/uninitialized_algorithms.h:592
#19	0x0000000100747148 in std::__1::vector<folly::dynamic, std::__1::allocator<folly::dynamic>>::__init_with_size[abi:ne180100]<folly::dynamic*, folly::dynamic*> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/vector:1082
#20	0x0000000100747140 in std::__1::vector<folly::dynamic, std::__1::allocator<folly::dynamic>>::__init_with_size[abi:ne180100]<folly::dynamic*, folly::dynamic*> at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/vector:760
#21	0x0000000100745020 in folly::dynamic::dynamic [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/vector:1195
#22	0x0000000100744ff8 in folly::dynamic::dynamic [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/vector:1194
#23	0x0000000100744ff8 in folly::dynamic::dynamic at /app/ios/Pods/RCT-Folly/folly/json/dynamic.cpp:136
#24	0x000000010074769c in std::__1::pair<folly::dynamic const, folly::dynamic>::pair[abi:ne180100] [inlined] at /app/ios/Pods/RCT-Folly/folly/json/dynamic.cpp:134
#25	0x0000000100747698 in std::__1::pair<folly::dynamic const, folly::dynamic>::pair[abi:ne180100] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__utility/pair.h:91
#26	0x0000000100747640 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__construct_node_hash<std::__1::pair<folly::dynamic const, folly::dynamic> const&> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__utility/pair.h:91
#27	0x0000000100747638 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__construct_node_hash<std::__1::pair<folly::dynamic const, folly::dynamic> const&> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/construct_at.h:41
#28	0x0000000100747638 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__construct_node_hash<std::__1::pair<folly::dynamic const, folly::dynamic> const&> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/construct_at.h:49
#29	0x0000000100747638 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__construct_node_hash<std::__1::pair<folly::dynamic const, folly::dynamic> const&> [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__memory/allocator_traits.h:305
#30	0x0000000100747638 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__construct_node_hash<std::__1::pair<folly::dynamic const, folly::dynamic> const&> at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__hash_table:1790
#31	0x0000000100747480 in std::__1::__hash_table<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, std::__1::__unordered_map_hasher<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, true>, std::__1::__unordered_map_equal<folly::dynamic, std::__1::__hash_value_type<folly::dynamic, folly::dynamic>, folly::detail::DynamicKeyEqual, folly::detail::DynamicHasher, true>, std::__1::allocator<std::__1::__hash_value_type<folly::dynamic, folly::dynamic>>>::__emplace_unique_key_args<folly::dynamic, std::__1::pair<folly::dynamic const, folly::dynamic> const&> at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__hash_table:1495
#32	0x000000010074735c in std::__1::unordered_map<folly::dynamic, folly::dynamic, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, std::__1::allocator<std::__1::pair<folly::dynamic const, folly::dynamic>>>::unordered_map [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__hash_table:821
#33	0x0000000100747350 in std::__1::unordered_map<folly::dynamic, folly::dynamic, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, std::__1::allocator<std::__1::pair<folly::dynamic const, folly::dynamic>>>::unordered_map [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/unordered_map:1732
#34	0x0000000100747348 in std::__1::unordered_map<folly::dynamic, folly::dynamic, folly::detail::DynamicHasher, folly::detail::DynamicKeyEqual, std::__1::allocator<std::__1::pair<folly::dynamic const, folly::dynamic>>>::unordered_map at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/unordered_map:1658
#35	0x0000000100745050 in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/container/detail/F14MapFallback.h:42
#36	0x000000010074504c in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/container/detail/F14MapFallback.h:650
#37	0x000000010074504c in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/json/dynamic-inl.h:170
#38	0x000000010074504c in folly::dynamic::dynamic [inlined] at /app/ios/Pods/Headers/Private/RCT-Folly/folly/json/dynamic-inl.h:170
#39	0x000000010074504c in folly::dynamic::dynamic at /app/ios/Pods/RCT-Folly/folly/json/dynamic.cpp:136
#40	0x000000010090c9f4 in facebook::react::ShadowNode::clone at /app/node_modules/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp:146
#41	0x00000001007b10a4 in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:60
#42	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#43	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#44	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#45	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#46	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#47	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#48	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#49	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#50	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#51	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#52	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#53	0x00000001007b0ffc in reanimated::cloneShadowTreeWithNewPropsRecursive at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:55
#54	0x00000001007b12a0 in reanimated::cloneShadowTreeWithNewProps at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp:90
#55	0x00000001007a5388 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&), std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&)>, std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)>::operator() [inlined] at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp:788
#56	0x00000001007a5364 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&), std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&)>, std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)>::operator() [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__type_traits/invoke.h:344
#57	0x00000001007a5364 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&), std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&)>, std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)>::operator() [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__type_traits/invoke.h:411
#58	0x00000001007a5364 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&), std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&)>, std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)>::operator() [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:169
#59	0x00000001007a5364 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&), std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&)>, std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)>::operator() at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:311
#60	0x000000010090e960 in facebook::react::ShadowTree::tryCommit [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:428
#61	0x000000010090e950 in facebook::react::ShadowTree::tryCommit [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:981
#62	0x000000010090e950 in facebook::react::ShadowTree::tryCommit at /app/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp:275
#63	0x000000010090e81c in facebook::react::ShadowTree::commit at /app/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp:244
#64	0x00000001007a5214 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0, std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0>, void (facebook::react::ShadowTree const&)>::operator() [inlined] at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp:780
#65	0x00000001007a51e0 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0, std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0>, void (facebook::react::ShadowTree const&)>::operator() [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__type_traits/invoke.h:344
#66	0x00000001007a51e0 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0, std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0>, void (facebook::react::ShadowTree const&)>::operator() [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__type_traits/invoke.h:419
#67	0x00000001007a51e0 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0, std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0>, void (facebook::react::ShadowTree const&)>::operator() [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:169
#68	0x00000001007a51e0 in std::__1::__function::__func<reanimated::ReanimatedModuleProxy::performOperations()::$_0, std::__1::allocator<reanimated::ReanimatedModuleProxy::performOperations()::$_0>, void (facebook::react::ShadowTree const&)>::operator() at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:311
#69	0x0000000100911484 in facebook::react::ShadowTreeRegistry::visit [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:428
#70	0x0000000100911478 in facebook::react::ShadowTreeRegistry::visit [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.0.sdk/usr/include/c++/v1/__functional/function.h:981
#71	0x0000000100911478 in facebook::react::ShadowTreeRegistry::visit at /app/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTreeRegistry.cpp:50
#72	0x000000010079f440 in reanimated::ReanimatedModuleProxy::performOperations at /app/node_modules/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp:779
#73	0x00000001007901f8 in invocation function for block in reanimated::commonInit(REAModule*, std::__1::shared_ptr<reanimated::ReanimatedModuleProxy>) at /app/node_modules/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm:107
#74	0x00000001007a8f6c in -[REANodesManager performOperations] at /app/node_modules/react-native-reanimated/apple/reanimated/apple/REANodesManager.mm:307
#75	0x00000001007a8eb8 in -[REANodesManager onAnimationFrame:] at /app/node_modules/react-native-reanimated/apple/reanimated/apple/REANodesManager.mm:297

Have also attached the relevant core dump, though I'm not sure if it's of any use: reanimated-corefile-small.zip

OrfeasZ avatar Jul 07 '25 15:07 OrfeasZ

TSAN immediately reports the following:

WARNING: ThreadSanitizer: data race (pid=6112)
  Read of size 8 at 0x00010d109c18 by main thread (mutexes: write M0):
    #0 facebook::react::ShadowNode::clone(facebook::react::ShadowNodeFragment const&) const <null> (app:arm64+0x10048c5a8)
    #1 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fb10)
    #2 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #3 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #4 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #5 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #6 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #7 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #8 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #9 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #10 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #11 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #12 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #13 reanimated::cloneShadowTreeWithNewPropsRecursive(facebook::react::ShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int>>>>> const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fa14)
    #14 reanimated::cloneShadowTreeWithNewProps(facebook::react::RootShadowNode const&, std::__1::unordered_map<facebook::react::ShadowNodeFamily const*, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>, std::__1::hash<facebook::react::ShadowNodeFamily const*>, std::__1::equal_to<facebook::react::ShadowNodeFamily const*>, std::__1::allocator<std::__1::pair<facebook::react::ShadowNodeFamily const* const, std::__1::vector<facebook::react::RawProps, std::__1::allocator<facebook::react::RawProps>>>>> const&) <null> (app:arm64+0x10027fdb0)
    #15 std::__1::__function::__func<reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double)::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&), std::__1::allocator<reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double)::$_0::operator()(facebook::react::ShadowTree const&) const::'lambda'(facebook::react::RootShadowNode const&)>, std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)>::operator()(facebook::react::RootShadowNode const&) <null> (app:arm64+0x100271a48)
    #16 facebook::react::ShadowTree::tryCommit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048feb0)
    #17 facebook::react::ShadowTree::commit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048fd04)
    #18 std::__1::__function::__func<reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double)::$_0, std::__1::allocator<reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double)::$_0>, void (facebook::react::ShadowTree const&)>::operator()(facebook::react::ShadowTree const&) <null> (app:arm64+0x100271688)
    #19 facebook::react::ShadowTreeRegistry::visit(int, std::__1::function<void (facebook::react::ShadowTree const&)> const&) const <null> (app:arm64+0x100494314)
    #20 reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double) <null> (app:arm64+0x1002713e4)
    #21 facebook::react::UIManager::reportMount(int) const <null> (app:arm64+0x1004a581c)
    #22 facebook::react::Scheduler::reportMount(int) const <null> (app:arm64+0x10048261c)
    #23 -[RCTScheduler reportMount:] <null> (app:arm64+0x10059e4e0)
    #24 __69-[RCTSurfacePresenter mountingManager:didMountComponentsWithRootTag:]_block_invoke <null> (app:arm64+0x1005aeb9c)
    #25 __tsan::invoke_and_release_block(void*) <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x7bccc)
    #26 _dispatch_client_callout <null> (libdispatch.dylib:arm64+0x67b4)
    #27 <null> <null> (dyld:arm64+0x140c)

  Previous write of size 8 at 0x00010d109c18 by thread T9:
    #0 std::__1::unique_ptr<folly::dynamic, std::__1::default_delete<folly::dynamic>>::reset[abi:ne180100](folly::dynamic*) <null> (app:arm64+0x10048eb90)
    #1 facebook::react::UIManager::setNativeProps_DEPRECATED(std::__1::shared_ptr<facebook::react::ShadowNode const> const&, facebook::react::RawProps) const <null> (app:arm64+0x1004a48b4)
    #2 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_13, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_13>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b77c4)
    #3 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #4 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #5 std::__1::__function::__func<facebook::react::TimerManager::callTimer(int)::$_0, std::__1::allocator<facebook::react::TimerManager::callTimer(int)::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006386e8)
    #6 facebook::react::Task::execute(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006e0e30)
    #7 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad48)
    #8 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db870)
    #9 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db430)
    #10 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd4a8)
    #11 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b1b4)
    #12 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e784)
    #13 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x1003834d0)
    #14 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x100384374)
    #15 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x1003831fc)
    #16 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #17 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Location is heap block of size 352 at 0x00010d109c00 allocated by thread T9:
    #0 operator new(unsigned long) <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x7f71c)
    #1 std::__1::shared_ptr<facebook::react::ShadowNodeFamily> std::__1::allocate_shared[abi:ne180100]<facebook::react::ShadowNodeFamily, std::__1::allocator<facebook::react::ShadowNodeFamily>, facebook::react::ShadowNodeFamilyFragment const&, std::__1::shared_ptr<facebook::react::BaseViewEventEmitter const>, std::__1::weak_ptr<facebook::react::EventDispatcher const> const&, facebook::react::ConcreteComponentDescriptor<facebook::react::ViewShadowNode> const&, void>(std::__1::allocator<facebook::react::ShadowNodeFamily> const&, facebook::react::ShadowNodeFamilyFragment const&, std::__1::shared_ptr<facebook::react::BaseViewEventEmitter const>&&, std::__1::weak_ptr<facebook::react::EventDispatcher const> const&, facebook::react::ConcreteComponentDescriptor<facebook::react::ViewShadowNode> const&) <null> (app:arm64+0x1005d5338)
    #2 facebook::react::ConcreteComponentDescriptor<facebook::react::ViewShadowNode>::createFamily(facebook::react::ShadowNodeFamilyFragment const&) const <null> (app:arm64+0x1005d4a30)
    #3 facebook::react::UIManager::createNode(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, int, facebook::react::RawProps, std::__1::shared_ptr<facebook::react::InstanceHandle const>) const <null> (app:arm64+0x1004a2654)
    #4 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_0, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_0>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b02e4)
    #5 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #6 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db87c)
    #7 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db430)
    #8 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd4a8)
    #9 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b1b4)
    #10 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e784)
    #11 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x1003834d0)
    #12 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x100384374)
    #13 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x1003831fc)
    #14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #15 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Mutex M0 (0x00010e119ad8) created at:
    #0 pthread_mutex_lock <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x311c0)
    #1 std::__1::mutex::lock() <null> (libc++.1.dylib:arm64+0x21178)
    #2 reanimated::ReanimatedCommitHook::shadowTreeWillCommit(facebook::react::ShadowTree const&, std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, std::__1::shared_ptr<facebook::react::RootShadowNode> const&) <null> (app:arm64+0x100257ad4)
    #3 facebook::react::UIManager::shadowTreeWillCommit(facebook::react::ShadowTree const&, std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, std::__1::shared_ptr<facebook::react::RootShadowNode> const&) const <null> (app:arm64+0x1004a5518)
    #4 facebook::react::ShadowTree::tryCommit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048fffc)
    #5 facebook::react::ShadowTree::commit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048fd04)
    #6 std::__1::__function::__func<facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions)::$_0, std::__1::allocator<facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions)::$_0>, void (facebook::react::ShadowTree const&)>::operator()(facebook::react::ShadowTree const&) <null> (app:arm64+0x1004a74a4)
    #7 facebook::react::ShadowTreeRegistry::visit(int, std::__1::function<void (facebook::react::ShadowTree const&)> const&) const <null> (app:arm64+0x100494314)
    #8 facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions) <null> (app:arm64+0x1004a3444)
    #9 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_9, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_9>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b5c34)
    #10 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #11 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad48)
    #12 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db870)
    #13 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db430)
    #14 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd4a8)
    #15 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b1b4)
    #16 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e784)
    #17 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x1003834d0)
    #18 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x100384374)
    #19 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x1003831fc)
    #20 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #21 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Thread T9 (tid=1900958, running) created by main thread at:
    #0 pthread_create <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x3027c)
    #1 -[NSThread startAndReturnError:] <null> (Foundation:arm64+0x7779b0)
    #2 -[RCTJSThreadManager init] <null> (app:arm64+0x1006241c8)
    #3 -[RCTInstance initWithDelegate:jsRuntimeFactory:bundleManager:turboModuleManagerDelegate:moduleRegistry:parentInspectorTarget:launchOptions:] <null> (app:arm64+0x10061d6bc)
    #4 -[RCTHost start] <null> (app:arm64+0x10061a93c)
    #5 -[RCTRootViewFactory createReactHost:] <null> (app:arm64+0x1005450d0)
    #6 -[RCTRootViewFactory createReactHostIfNeeded:] <null> (app:arm64+0x100544f08)
    #7 -[RCTRootViewFactory viewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x100544038)
    #8 -[EXReactRootViewFactory superViewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x100030068)
    #9 Expo.ExpoAppDelegate.recreateRootView(withBundleURL: Swift.Optional<Foundation.URL>, moduleName: Swift.Optional<Swift.String>, initialProps: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>) -> __C.UIView <null> (app:arm64+0x1000311e0)
    #10 protocol witness for ExpoModulesCore.ReactNativeFactoryProvider.recreateRootView(withBundleURL: Swift.Optional<Foundation.URL>, moduleName: Swift.Optional<Swift.String>, initialProps: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>) -> __C.UIView in conformance Expo.ExpoAppDelegate : ExpoModulesCore.ReactNativeFactoryProvider in Expo <null> (app:arm64+0x100036240)
    #11 closure #3 () -> __C.UIView in implicit closure #1 () throws -> __C.UIView in ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x100159518)
    #12 ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x100159128)
    #13 @objc ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x1001596ac)
    #14 -[EXReactRootViewFactory viewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x10002ff04)
    #15 -[RCTReactNativeFactory startReactNativeWithModuleName:inWindow:initialProperties:launchOptions:] <null> (app:arm64+0x100541238)
    #16 -[RCTReactNativeFactory startReactNativeWithModuleName:inWindow:launchOptions:] <null> (app:arm64+0x10054118c)
    #17 app.AppDelegate.application(_: __C.UIApplication, didFinishLaunchingWithOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> Swift.Bool <null> (app:arm64+0x1000042a0)
    #18 @objc app.AppDelegate.application(_: __C.UIApplication, didFinishLaunchingWithOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> Swift.Bool <null> (app:arm64+0x10000498c)
    #19 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] <null> (UIKitCore:arm64+0xe1e4e8)
    #20 <null> <null> (dyld:arm64+0x140c)

OrfeasZ avatar Jul 07 '25 15:07 OrfeasZ

From looking at this, it seems that thread T9 is writing into family.nativeProps_DEPRECATED while reanimated is cloning the shadow tree, resulting in a data race inside ShadowNode::clone, which tries to read family.nativeProps_DEPRECATED at the same time (in its if check and the componentDescriptor.cloneProps call).

The former seems to be triggered by a JS call to setNativeProps, but we're not making any such calls from our code, so it's most likely coming from a third party library. I'll see if I can make a repro with this in mind.

OrfeasZ avatar Jul 07 '25 16:07 OrfeasZ

After some further investigation, the call to setNativeProps seems to come from react-native itself, and more specifically node_modules/react-native/src/private/animated/createAnimatedPropsHook.js. No luck creating a repro yet...

OrfeasZ avatar Jul 07 '25 20:07 OrfeasZ

TSan reports two additional data races:

==================
WARNING: ThreadSanitizer: data race (pid=80367)
  Write of size 8 at 0x000125611330 by thread T11 (mutexes: write M0):
    #0 std::__1::shared_ptr<facebook::react::CallInvoker>::operator=[abi:ne180100](std::__1::shared_ptr<facebook::react::CallInvoker> const&) <null> (app:arm64+0x1000b539c)
    #1 facebook::react::ShadowNode::updateRuntimeShadowNodeReference(std::__1::shared_ptr<facebook::react::ShadowNode const> const&) const <null> (app:arm64+0x10048d20c)
    #2 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc35c)
    #3 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #4 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #5 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #6 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #7 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #8 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #9 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #10 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #11 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #12 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #13 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #14 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #15 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #16 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #17 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #18 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #19 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #20 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #21 facebook::react::ShadowTree::tryCommit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10049013c)
    #22 facebook::react::ShadowTree::commit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048fcb0)
    #23 std::__1::__function::__func<facebook::react::UIManager::setNativeProps_DEPRECATED(std::__1::shared_ptr<facebook::react::ShadowNode const> const&, facebook::react::RawProps) const::$_0, std::__1::allocator<facebook::react::UIManager::setNativeProps_DEPRECATED(std::__1::shared_ptr<facebook::react::ShadowNode const> const&, facebook::react::RawProps) const::$_0>, void (facebook::react::ShadowTree const&)>::operator()(facebook::react::ShadowTree const&) <null> (app:arm64+0x1004a9930)
    #24 facebook::react::ShadowTreeRegistry::visit(int, std::__1::function<void (facebook::react::ShadowTree const&)> const&) const <null> (app:arm64+0x1004942c0)
    #25 facebook::react::UIManager::setNativeProps_DEPRECATED(std::__1::shared_ptr<facebook::react::ShadowNode const> const&, facebook::react::RawProps) const <null> (app:arm64+0x1004a4958)
    #26 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_13, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_13>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b77ac)
    #27 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #28 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #29 std::__1::__function::__func<facebook::react::TimerManager::callTimer(int)::$_0, std::__1::allocator<facebook::react::TimerManager::callTimer(int)::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006386d0)
    #30 facebook::react::Task::execute(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006e0e18)
    #31 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad30)
    #32 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db858)
    #33 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db418)
    #34 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd490)
    #35 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b19c)
    #36 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e6c4)
    #37 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x100383410)
    #38 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x1003842b4)
    #39 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x10038313c)
    #40 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #41 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Previous read of size 8 at 0x000125611330 by main thread (mutexes: write M1):
    #0 reanimated::ReanimatedModuleProxy::updateProps(facebook::jsi::Runtime&, facebook::jsi::Value const&) <null> (app:arm64+0x1002641ec)
    #1 std::__1::__function::__func<reanimated::ReanimatedModuleProxy::init(reanimated::PlatformDepMethodsHolder const&)::$_2, std::__1::allocator<reanimated::ReanimatedModuleProxy::init(reanimated::PlatformDepMethodsHolder const&)::$_2>, void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&) <null> (app:arm64+0x10026a208)
    #2 facebook::jsi::Value std::__1::__invoke_void_return_wrapper<facebook::jsi::Value, false>::__call[abi:ne180100]<std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)> worklets::jsi_utils::createHostFunction<std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>>(std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>)::'lambda'(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)&, facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long>(std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)> worklets::jsi_utils::createHostFunction<std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>>(std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>)::'lambda'(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)&, facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x10028bd10)
    #3 std::__1::__function::__func<std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)> worklets::jsi_utils::createHostFunction<std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>>(std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>)::'lambda'(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long), std::__1::allocator<std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)> worklets::jsi_utils::createHostFunction<std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>>(std::__1::function<void (facebook::jsi::Runtime&, facebook::jsi::Value const&)>)::'lambda'(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x10028bb14)
    #4 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (app:arm64+0x1000e18a0)
    #5 std::__1::__function::__func<facebook::jsi::DecoratedHostFunction, std::__1::allocator<facebook::jsi::DecoratedHostFunction>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x10025d3fc)
    #6 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (app:arm64+0x1000e18a0)
    #7 std::__1::__function::__func<facebook::jsi::DecoratedHostFunction, std::__1::allocator<facebook::jsi::DecoratedHostFunction>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x10025d3fc)
    #8 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #9 facebook::jsi::WithRuntimeDecorator<worklets::AroundLock, facebook::jsi::Runtime, facebook::jsi::Runtime>::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) <null> (app:arm64+0x1002959e0)
    #10 facebook::jsi::Value worklets::runOnRuntimeGuarded<facebook::jsi::Value&>(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value&) <null> (app:arm64+0x100262ab0)
    #11 reanimated::ReanimatedModuleProxy::onRender(double) <null> (app:arm64+0x100262990)
    #12 std::__1::__function::__func<reanimated::ReanimatedModuleProxy::init(reanimated::PlatformDepMethodsHolder const&)::$_0, std::__1::allocator<reanimated::ReanimatedModuleProxy::init(reanimated::PlatformDepMethodsHolder const&)::$_0>, void (double)>::operator()(double&&) <null> (app:arm64+0x100268a04)
    #13 invocation function for block in reanimated::makeRequestRender(REANodesManager*)::$_0::operator()(std::__1::function<void (double)>) const <null> (app:arm64+0x10024c208)
    #14 -[REANodesManager onAnimationFrame:] <null> (app:arm64+0x100274998)
    #15 CA::Display::DisplayLinkItem::dispatch_(CA::SignPost::Interval<(CA::SignPost::CAEventCode)835322056>&) <null> (QuartzCore:arm64+0x17a6c)
    #16 <null> <null> (dyld:arm64+0x140c)

  Location is heap block of size 48 at 0x000125611310 allocated by thread T11:
    #0 operator new(unsigned long) <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x7f71c)
    #1 facebook::react::valueFromShadowNode(facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::ShadowNode const>, bool) <null> (app:arm64+0x1004b0ae8)
    #2 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_0, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_0>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b0300)
    #3 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #4 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db864)
    #5 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db418)
    #6 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd490)
    #7 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b19c)
    #8 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e6c4)
    #9 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x100383410)
    #10 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x1003842b4)
    #11 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x10038313c)
    #12 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #13 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Mutex M0 (0x000102e05f90) created at:
    #0 pthread_mutex_lock <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x311c0)
    #1 std::__1::mutex::lock() <null> (libc++.1.dylib:arm64+0x21178)
    #2 facebook::react::ShadowTree::commit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048fcb0)
    #3 std::__1::__function::__func<facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions)::$_0, std::__1::allocator<facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions)::$_0>, void (facebook::react::ShadowTree const&)>::operator()(facebook::react::ShadowTree const&) <null> (app:arm64+0x1004a748c)
    #4 facebook::react::ShadowTreeRegistry::visit(int, std::__1::function<void (facebook::react::ShadowTree const&)> const&) const <null> (app:arm64+0x1004942c0)
    #5 facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions) <null> (app:arm64+0x1004a3414)
    #6 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_9, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_9>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b5c1c)
    #7 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #8 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad30)
    #9 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db858)
    #10 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db418)
    #11 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd490)
    #12 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b19c)
    #13 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e6c4)
    #14 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x100383410)
    #15 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x1003842b4)
    #16 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x10038313c)
    #17 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #18 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Mutex M1 (0x00010be3c5b8) created at:
    #0 pthread_mutex_init <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x31030)
    #1 std::__1::recursive_mutex::recursive_mutex() <null> (libc++.1.dylib:arm64+0x21214)
    #2 std::__1::shared_ptr<std::__1::recursive_mutex> std::__1::allocate_shared[abi:ne180100]<std::__1::recursive_mutex, std::__1::allocator<std::__1::recursive_mutex>, void>(std::__1::allocator<std::__1::recursive_mutex> const&) <null> (app:arm64+0x100296cc8)
    #3 worklets::WorkletRuntime::WorkletRuntime(facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread> const&, std::__1::shared_ptr<worklets::JSScheduler> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) <null> (app:arm64+0x100290c10)
    #4 worklets::WorkletRuntime::WorkletRuntime(facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread> const&, std::__1::shared_ptr<worklets::JSScheduler> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) <null> (app:arm64+0x100291240)
    #5 worklets::WorkletRuntime* std::__1::construct_at[abi:ne180100]<worklets::WorkletRuntime, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread>, std::__1::shared_ptr<worklets::JSScheduler>, char const (&) [22], bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, worklets::WorkletRuntime*>(worklets::WorkletRuntime*, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread>&&, std::__1::shared_ptr<worklets::JSScheduler>&&, char const (&) [22], bool&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) <null> (app:arm64+0x100267bdc)
    #6 std::__1::__shared_ptr_emplace<worklets::WorkletRuntime, std::__1::allocator<worklets::WorkletRuntime>>::__shared_ptr_emplace[abi:ne180100]<facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread>, std::__1::shared_ptr<worklets::JSScheduler>, char const (&) [22], bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::allocator<worklets::WorkletRuntime>, 0>(std::__1::allocator<worklets::WorkletRuntime>, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread>&&, std::__1::shared_ptr<worklets::JSScheduler>&&, char const (&) [22], bool&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) <null> (app:arm64+0x100267a1c)
    #7 std::__1::shared_ptr<worklets::WorkletRuntime> std::__1::allocate_shared[abi:ne180100]<worklets::WorkletRuntime, std::__1::allocator<worklets::WorkletRuntime>, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread>, std::__1::shared_ptr<worklets::JSScheduler>, char const (&) [22], bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, void>(std::__1::allocator<worklets::WorkletRuntime> const&, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::MessageQueueThread>&&, std::__1::shared_ptr<worklets::JSScheduler>&&, char const (&) [22], bool&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) <null> (app:arm64+0x100267930)
    #8 reanimated::ReanimatedModuleProxy::ReanimatedModuleProxy(std::__1::shared_ptr<worklets::WorkletsModuleProxy> const&, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::CallInvoker> const&, reanimated::PlatformDepMethodsHolder const&, bool, bool) <null> (app:arm64+0x10025d754)
    #9 reanimated::ReanimatedModuleProxy::ReanimatedModuleProxy(std::__1::shared_ptr<worklets::WorkletsModuleProxy> const&, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::CallInvoker> const&, reanimated::PlatformDepMethodsHolder const&, bool, bool) <null> (app:arm64+0x10025deac)
    #10 std::__1::__shared_ptr_emplace<reanimated::ReanimatedModuleProxy, std::__1::allocator<reanimated::ReanimatedModuleProxy>>::__shared_ptr_emplace[abi:ne180100]<std::__1::shared_ptr<worklets::WorkletsModuleProxy> const&, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::CallInvoker> const&, reanimated::PlatformDepMethodsHolder&, bool&, bool, std::__1::allocator<reanimated::ReanimatedModuleProxy>, 0>(std::__1::allocator<reanimated::ReanimatedModuleProxy>, std::__1::shared_ptr<worklets::WorkletsModuleProxy> const&, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::CallInvoker> const&, reanimated::PlatformDepMethodsHolder&, bool&, bool&&) <null> (app:arm64+0x10024a848)
    #11 std::__1::shared_ptr<reanimated::ReanimatedModuleProxy> std::__1::allocate_shared[abi:ne180100]<reanimated::ReanimatedModuleProxy, std::__1::allocator<reanimated::ReanimatedModuleProxy>, std::__1::shared_ptr<worklets::WorkletsModuleProxy> const&, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::CallInvoker> const&, reanimated::PlatformDepMethodsHolder&, bool&, bool, void>(std::__1::allocator<reanimated::ReanimatedModuleProxy> const&, std::__1::shared_ptr<worklets::WorkletsModuleProxy> const&, facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::CallInvoker> const&, reanimated::PlatformDepMethodsHolder&, bool&, bool&&) <null> (app:arm64+0x10024a744)
    #12 reanimated::createReanimatedModule(REAModule*, RCTBridge*, std::__1::shared_ptr<facebook::react::CallInvoker> const&, WorkletsModule*, bool) <null> (app:arm64+0x1002495b4)
    #13 -[REAModule installTurboModule] <null> (app:arm64+0x100255ca0)
    #14 __invoking___ <null> (CoreFoundation:arm64+0x132cbc)
    #15 std::__1::__function::__func<facebook::react::ObjCTurboModule::performMethodInvocation(facebook::jsi::Runtime&, bool, char const*, NSInvocation*, NSMutableArray*)::$_0, std::__1::allocator<facebook::react::ObjCTurboModule::performMethodInvocation(facebook::jsi::Runtime&, bool, char const*, NSInvocation*, NSMutableArray*)::$_0>, void ()>::operator()() <null> (app:arm64+0x10051ec4c)
    #16 (anonymous namespace)::ModuleNativeMethodCallInvoker::invokeSync(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::function<void ()>&&) <null> (app:arm64+0x1005262e0)
    #17 facebook::react::ObjCTurboModule::performMethodInvocation(facebook::jsi::Runtime&, bool, char const*, NSInvocation*, NSMutableArray*) <null> (app:arm64+0x100517714)
    #18 facebook::react::ObjCTurboModule::invokeObjCMethod(facebook::jsi::Runtime&, facebook::react::TurboModuleMethodValueKind, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, objc_selector*, facebook::jsi::Value const*, unsigned long) <null> (app:arm64+0x10051a66c)
    #19 facebook::react::__hostFunction_NativeReanimatedModuleSpecJSI_installTurboModule(facebook::jsi::Runtime&, facebook::react::TurboModule&, facebook::jsi::Value const*, unsigned long) <null> (app:arm64+0x100707fa0)
    #20 std::__1::__function::__func<facebook::react::TurboModule::create(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::'lambda'(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long), std::__1::allocator<facebook::react::TurboModule::create(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::'lambda'(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x100267690)
    #21 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #22 std::__1::__function::__func<facebook::react::UIManager::startSurface(std::__1::unique_ptr<facebook::react::ShadowTree, std::__1::default_delete<facebook::react::ShadowTree>>&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, folly::dynamic const&, facebook::react::DisplayMode) const::$_0, std::__1::allocator<facebook::react::UIManager::startSurface(std::__1::unique_ptr<facebook::react::ShadowTree, std::__1::default_delete<facebook::react::ShadowTree>>&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, folly::dynamic const&, facebook::react::DisplayMode) const::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1004a7d54)
    #23 facebook::react::Task::execute(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006e0e18)
    #24 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad30)
    #25 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db858)
    #26 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db418)
    #27 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd490)
    #28 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b19c)
    #29 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e6c4)
    #30 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x100383410)
    #31 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x1003842b4)
    #32 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x10038313c)
    #33 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #34 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Thread T11 (tid=1781947, running) created by main thread at:
    #0 pthread_create <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x3027c)
    #1 -[NSThread startAndReturnError:] <null> (Foundation:arm64+0x7779b0)
    #2 -[RCTJSThreadManager init] <null> (app:arm64+0x1006241b0)
    #3 -[RCTInstance initWithDelegate:jsRuntimeFactory:bundleManager:turboModuleManagerDelegate:moduleRegistry:parentInspectorTarget:launchOptions:] <null> (app:arm64+0x10061d6a4)
    #4 -[RCTHost start] <null> (app:arm64+0x10061a924)
    #5 -[RCTRootViewFactory createReactHost:] <null> (app:arm64+0x1005450b8)
    #6 -[RCTRootViewFactory createReactHostIfNeeded:] <null> (app:arm64+0x100544ef0)
    #7 -[RCTRootViewFactory viewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x100544020)
    #8 -[EXReactRootViewFactory superViewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x10002ffa8)
    #9 Expo.ExpoAppDelegate.recreateRootView(withBundleURL: Swift.Optional<Foundation.URL>, moduleName: Swift.Optional<Swift.String>, initialProps: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>) -> __C.UIView <null> (app:arm64+0x100031120)
    #10 protocol witness for ExpoModulesCore.ReactNativeFactoryProvider.recreateRootView(withBundleURL: Swift.Optional<Foundation.URL>, moduleName: Swift.Optional<Swift.String>, initialProps: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>) -> __C.UIView in conformance Expo.ExpoAppDelegate : ExpoModulesCore.ReactNativeFactoryProvider in Expo <null> (app:arm64+0x100036180)
    #11 closure #3 () -> __C.UIView in implicit closure #1 () throws -> __C.UIView in ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x100159458)
    #12 ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x100159068)
    #13 @objc ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x1001595ec)
    #14 -[EXReactRootViewFactory viewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x10002fe44)
    #15 -[RCTReactNativeFactory startReactNativeWithModuleName:inWindow:initialProperties:launchOptions:] <null> (app:arm64+0x100541220)
    #16 -[RCTReactNativeFactory startReactNativeWithModuleName:inWindow:launchOptions:] <null> (app:arm64+0x100541174)
    #17 app.AppDelegate.application(_: __C.UIApplication, didFinishLaunchingWithOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> Swift.Bool <null> (app:arm64+0x1000041e0)
    #18 @objc app.AppDelegate.application(_: __C.UIApplication, didFinishLaunchingWithOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> Swift.Bool <null> (app:arm64+0x1000048cc)
    #19 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] <null> (UIKitCore:arm64+0xe1e4e8)
    #20 <null> <null> (dyld:arm64+0x140c)
WARNING: ThreadSanitizer: data race (pid=80367)
  Read of size 8 at 0x000112e08540 by thread T11:
    #0 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_3, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_3>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b2468)
    #1 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #2 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad30)
    #3 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db858)
    #4 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db418)
    #5 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd490)
    #6 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b19c)
    #7 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e6c4)
    #8 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x100383410)
    #9 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x1003842b4)
    #10 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x10038313c)
    #11 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #12 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Previous write of size 8 at 0x000112e08540 by main thread (mutexes: write M0):
    #0 std::__1::shared_ptr<facebook::react::CallInvoker>::operator=[abi:ne180100](std::__1::shared_ptr<facebook::react::CallInvoker> const&) <null> (app:arm64+0x1000b539c)
    #1 facebook::react::ShadowNode::updateRuntimeShadowNodeReference(std::__1::shared_ptr<facebook::react::ShadowNode const> const&) const <null> (app:arm64+0x10048d20c)
    #2 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc35c)
    #3 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #4 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #5 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #6 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #7 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #8 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #9 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #10 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #11 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #12 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #13 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #14 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #15 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #16 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #17 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #18 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #19 facebook::react::updateMountedFlag(std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&, std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>> const&) <null> (app:arm64+0x1004bc38c)
    #20 facebook::react::ShadowTree::tryCommit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10049013c)
    #21 facebook::react::ShadowTree::commit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048fcb0)
    #22 std::__1::__function::__func<reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double)::$_0, std::__1::allocator<reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double)::$_0>, void (facebook::react::ShadowTree const&)>::operator()(facebook::react::ShadowTree const&) <null> (app:arm64+0x1002715c8)
    #23 facebook::react::ShadowTreeRegistry::visit(int, std::__1::function<void (facebook::react::ShadowTree const&)> const&) const <null> (app:arm64+0x1004942c0)
    #24 reanimated::ReanimatedMountHook::shadowTreeDidMount(std::__1::shared_ptr<facebook::react::RootShadowNode const> const&, double) <null> (app:arm64+0x100271324)
    #25 facebook::react::UIManager::reportMount(int) const <null> (app:arm64+0x1004a5804)
    #26 facebook::react::Scheduler::reportMount(int) const <null> (app:arm64+0x10048255c)
    #27 -[RCTScheduler reportMount:] <null> (app:arm64+0x10059e4c8)
    #28 __69-[RCTSurfacePresenter mountingManager:didMountComponentsWithRootTag:]_block_invoke <null> (app:arm64+0x1005aeb84)
    #29 __tsan::invoke_and_release_block(void*) <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x7bccc)
    #30 _dispatch_client_callout <null> (libdispatch.dylib:arm64+0x67b4)
    #31 <null> <null> (dyld:arm64+0x140c)

  Location is heap block of size 48 at 0x000112e08520 allocated by thread T11:
    #0 operator new(unsigned long) <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x7f71c)
    #1 facebook::react::valueFromShadowNode(facebook::jsi::Runtime&, std::__1::shared_ptr<facebook::react::ShadowNode const>, bool) <null> (app:arm64+0x1004b0ae8)
    #2 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_3, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_3>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b25dc)
    #3 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #4 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad30)
    #5 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db858)
    #6 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db418)
    #7 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd490)
    #8 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b19c)
    #9 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e6c4)
    #10 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x100383410)
    #11 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x1003842b4)
    #12 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x10038313c)
    #13 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #14 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Mutex M0 (0x000102e05f90) created at:
    #0 pthread_mutex_lock <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x311c0)
    #1 std::__1::mutex::lock() <null> (libc++.1.dylib:arm64+0x21178)
    #2 facebook::react::ShadowTree::commit(std::__1::function<std::__1::shared_ptr<facebook::react::RootShadowNode> (facebook::react::RootShadowNode const&)> const&, facebook::react::ShadowTree::CommitOptions const&) const <null> (app:arm64+0x10048fcb0)
    #3 std::__1::__function::__func<facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions)::$_0, std::__1::allocator<facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions)::$_0>, void (facebook::react::ShadowTree const&)>::operator()(facebook::react::ShadowTree const&) <null> (app:arm64+0x1004a748c)
    #4 facebook::react::ShadowTreeRegistry::visit(int, std::__1::function<void (facebook::react::ShadowTree const&)> const&) const <null> (app:arm64+0x1004942c0)
    #5 facebook::react::UIManager::completeSurface(int, std::__1::shared_ptr<std::__1::vector<std::__1::shared_ptr<facebook::react::ShadowNode const>, std::__1::allocator<std::__1::shared_ptr<facebook::react::ShadowNode const>>>> const&, facebook::react::ShadowTree::CommitOptions) <null> (app:arm64+0x1004a3414)
    #6 std::__1::__function::__func<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_9, std::__1::allocator<facebook::react::UIManagerBinding::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)::$_9>, facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*&&, unsigned long&&) <null> (app:arm64+0x1004b5c1c)
    #7 std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>::operator()(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) const <null> (hermes:arm64+0x13170)
    #8 facebook::react::RuntimeScheduler_Modern::executeTask(facebook::jsi::Runtime&, facebook::react::Task&, bool) const <null> (app:arm64+0x1006dad30)
    #9 facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) <null> (app:arm64+0x1006db858)
    #10 facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&, bool) <null> (app:arm64+0x1006db418)
    #11 std::__1::__function::__func<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0, std::__1::allocator<facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0>, void (facebook::jsi::Runtime&)>::operator()(facebook::jsi::Runtime&) <null> (app:arm64+0x1006dd490)
    #12 _ZNSt3__110__function6__funcIZZN8facebook5react13ReactInstanceC1ENS_10unique_ptrINS3_9JSRuntimeENS_14default_deleteIS6_EEEENS_10shared_ptrINS3_18MessageQueueThreadEEENSA_INS3_12TimerManagerEEENS_8functionIFvRNS2_3jsi7RuntimeERKNS3_14JsErrorHandler14ProcessedErrorEEEEPNS3_18jsinspector_modern10HostTargetEENK3$_0clINSF_IFvSI_EEEEEDaT_EUlvE_NS_9allocatorISY_EEFvvEEclEv <null> (app:arm64+0x10062b19c)
    #13 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) <null> (app:arm64+0x10036e6c4)
    #14 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) <null> (app:arm64+0x100383410)
    #15 std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0, std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void ()>&&)::$_0>, void ()>::operator()() <null> (app:arm64+0x1003842b4)
    #16 invocation function for block in facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) <null> (app:arm64+0x10038313c)
    #17 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ <null> (CoreFoundation:arm64+0x900e8)
    #18 __NSThread__start__ <null> (Foundation:arm64+0x777d68)

  Thread T11 (tid=1781947, running) created by main thread at:
    #0 pthread_create <null> (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x3027c)
    #1 -[NSThread startAndReturnError:] <null> (Foundation:arm64+0x7779b0)
    #2 -[RCTJSThreadManager init] <null> (app:arm64+0x1006241b0)
    #3 -[RCTInstance initWithDelegate:jsRuntimeFactory:bundleManager:turboModuleManagerDelegate:moduleRegistry:parentInspectorTarget:launchOptions:] <null> (app:arm64+0x10061d6a4)
    #4 -[RCTHost start] <null> (app:arm64+0x10061a924)
    #5 -[RCTRootViewFactory createReactHost:] <null> (app:arm64+0x1005450b8)
    #6 -[RCTRootViewFactory createReactHostIfNeeded:] <null> (app:arm64+0x100544ef0)
    #7 -[RCTRootViewFactory viewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x100544020)
    #8 -[EXReactRootViewFactory superViewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x10002ffa8)
    #9 Expo.ExpoAppDelegate.recreateRootView(withBundleURL: Swift.Optional<Foundation.URL>, moduleName: Swift.Optional<Swift.String>, initialProps: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>) -> __C.UIView <null> (app:arm64+0x100031120)
    #10 protocol witness for ExpoModulesCore.ReactNativeFactoryProvider.recreateRootView(withBundleURL: Swift.Optional<Foundation.URL>, moduleName: Swift.Optional<Swift.String>, initialProps: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>) -> __C.UIView in conformance Expo.ExpoAppDelegate : ExpoModulesCore.ReactNativeFactoryProvider in Expo <null> (app:arm64+0x100036180)
    #11 closure #3 () -> __C.UIView in implicit closure #1 () throws -> __C.UIView in ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x100159458)
    #12 ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x100159068)
    #13 @objc ExpoModulesCore.ExpoReactDelegate.createReactRootView(moduleName: Swift.String, initialProperties: Swift.Optional<Swift.Dictionary<Swift.AnyHashable, Any>>, launchOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> __C.UIView <null> (app:arm64+0x1001595ec)
    #14 -[EXReactRootViewFactory viewWithModuleName:initialProperties:launchOptions:] <null> (app:arm64+0x10002fe44)
    #15 -[RCTReactNativeFactory startReactNativeWithModuleName:inWindow:initialProperties:launchOptions:] <null> (app:arm64+0x100541220)
    #16 -[RCTReactNativeFactory startReactNativeWithModuleName:inWindow:launchOptions:] <null> (app:arm64+0x100541174)
    #17 app.AppDelegate.application(_: __C.UIApplication, didFinishLaunchingWithOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> Swift.Bool <null> (app:arm64+0x1000041e0)
    #18 @objc app.AppDelegate.application(_: __C.UIApplication, didFinishLaunchingWithOptions: Swift.Optional<Swift.Dictionary<__C.UIApplicationLaunchOptionsKey, Any>>) -> Swift.Bool <null> (app:arm64+0x1000048cc)
    #19 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] <null> (UIKitCore:arm64+0xe1e4e8)
    #20 <null> <null> (dyld:arm64+0x140c)

Both of them seem related to something trying to access a shadow node using shadowNodeFromValue while updateRuntimeShadowNodeReference is called from another thread, which in turn replaces the shadowNode pointer shadowNodeFromValue reads. I'm guessing this shouldn't be an issue, since shadowNode is a shared pointer, so any reference counting should be done atomically, which should mitigate the risk of trying to read it while it's being destroyed.

OrfeasZ avatar Jul 09 '25 15:07 OrfeasZ

For now, due to lack of a better options, we've applied the following patch to react-native, hoping it improves the situation. We'll monitor and I'll post an update here. Keep in mind this patch is for RN 0.79.2, so it might not directly apply to newer versions.

react-native+0.79.2.patch

OrfeasZ avatar Jul 09 '25 15:07 OrfeasZ

@OrfeasZ I have the same issue on 0.79.5. Can this patch apply on 0.79.5 as well? Thanks

kenyipp avatar Jul 14 '25 16:07 kenyipp

We haven't seen any additional crashes since this patch was deployed, so it seems to be working. Not sure what next steps for this would be? Try to upstream on the react-native side?

@OrfeasZ I have the same issue on 0.79.5. Can this patch apply on 0.79.5 as well? Thanks

You can try but ymmv.

OrfeasZ avatar Jul 16 '25 17:07 OrfeasZ

After over a month in production with this patch, I can now confirm that this crash no longer occurs. However, the react-native team has not even looked at the PR. Maybe someone from the software mansion can raise it to them? Especially now with react-native switching to pre-built binaries for iOS, this will be more relevant to get into upstream sooner than later.

OrfeasZ avatar Sep 02 '25 19:09 OrfeasZ

After over a month in production with this patch, I can now confirm that this crash no longer occurs. However, the react-native team has not even looked at the PR. Maybe someone from the software mansion can raise it to them? Especially now with react-native switching to pre-built binaries for iOS, this will be more relevant to get into upstream sooner than later.

@OrfeasZ i'll try and give a feedback :D thank you for your effort

huanleanh avatar Sep 11 '25 09:09 huanleanh

Hey @OrfeasZ 👋 Thanks for your commitment! We'll try to ping the right folks from Meta and see if it's possible to move this forward.

piaskowyk avatar Sep 11 '25 11:09 piaskowyk

Thank you @OrfeasZ and @piaskowyk!

I have been monitoring it for a while, and I'm also seeing this happening in the latest version of React Native and Reanimated

Image

Versions

    "react": "19.1.0",
    "react-native": "0.81.4",
    "react-native-reanimated": "~4.1.0"

I can share the full stack trace if it helps somehow

ismaelsousa avatar Sep 12 '25 18:09 ismaelsousa

Thank you @OrfeasZ and @piaskowyk!

I have been monitoring it for a while, and I'm also seeing this happening in the latest version of React Native and Reanimated

Is this with or without the patch I've shared above?

OrfeasZ avatar Sep 12 '25 18:09 OrfeasZ

Is this with or without the patch I've shared above?

without the patch

ismaelsousa avatar Sep 12 '25 22:09 ismaelsousa

Thank you @OrfeasZ and @piaskowyk!

I have been monitoring it for a while, and I'm also seeing this happening in the latest version of React Native and Reanimated

Image ## Versions "react": "19.1.0", "react-native": "0.81.4", "react-native-reanimated": "~4.1.0" I can share the full stack trace if it helps somehow

I am experiencing the same issue, and I can see it in Firebase Crashlytics.

"react": "19.1.0",
"react-native": "0.80.0",
"react-native-reanimated": "~3.19.0"

hatn-lumin avatar Sep 15 '25 04:09 hatn-lumin

Thank you @OrfeasZ and @piaskowyk! I have been monitoring it for a while, and I'm also seeing this happening in the latest version of React Native and Reanimated Image

Versions

"react": "19.1.0",
"react-native": "0.81.4",
"react-native-reanimated": "~4.1.0"

I can share the full stack trace if it helps somehow

I am experiencing the same issue, and I can see it in Firebase Crashlytics.

"react": "19.1.0",
"react-native": "0.80.0",
"react-native-reanimated": "~3.19.0"

@hatn-lumin you should try to patch following the patch of @OrfeasZ manually in your RN 0.80.0

huanleanh avatar Sep 15 '25 04:09 huanleanh

I was just running TSAN in my build and I also see this behavior. Will try the patch

chrisnojima avatar Sep 16 '25 01:09 chrisnojima

Patch worked for me. Thanks @OrfeasZ

umairgillani94 avatar Sep 16 '25 14:09 umairgillani94

No action from meta. Issue is still present.

"react-native": "0.81.5"

sadikyalcin avatar Oct 31 '25 21:10 sadikyalcin

Still happening for me too with reanimated v4 and RN 0.81.x. Terrible.

isaacrowntree avatar Nov 11 '25 12:11 isaacrowntree