react-native-mmkv
react-native-mmkv copied to clipboard
iOS crash: malloc: *** error for object 0x282611260: pointer being freed was not allocated EXC_CRASH (SIGABRT)
Env:
- react-native: 0.73.1
- react-native-mmkv: 2.12.2
- react-native-quick-crypto: 0.6.1
Stack:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x1c997c9ec __pthread_kill + 8
1 libsystem_pthread.dylib 0x1c99d21d0 pthread_kill + 256
2 libsystem_c.dylib 0x1800fe3d8 abort + 120
3 libsystem_malloc.dylib 0x18016b6b4 malloc_vreport + 556
4 libsystem_malloc.dylib 0x18016b86c malloc_report + 60
5 libsystem_malloc.dylib 0x18015fc40 free + 428
6 DEV APPPP 0x10532ee18 void std::__1::__libcpp_operator_delete[abi:v160006]<void*>(void*) + 24 (new:295)
7 DEV APPPP 0x10532edf4 void std::__1::__do_deallocate_handle_size[abi:v160006]<>(void*, unsigned long) + 28 (new:319)
8 DEV APPPP 0x10532edcc std::__1::__libcpp_deallocate[abi:v160006](void*, unsigned long, unsigned long) + 36 (new:329)
9 DEV APPPP 0x106123be0 std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, void*>>::deallocate[abi:v160006](std::__1::__hash_node<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, void*>*, unsigned long) + 44 (allocator.h:131)
10 DEV APPPP 0x1061238e0 std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, void*>>>::deallocate[abi:v160006](std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, void*>>&, std::__1::__hash_node<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, void*>*, unsigned long) + 40 (allocator_traits.h:288)
11 DEV APPPP 0x1061237a4 std::__1::__hash_table<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::__unordered_map_hasher<Prop, std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, true>, std::__1::__unordered_map_equal<Prop, std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::equal_to<Prop>, std::__1::hash<Prop>, true>, std::__1::allocator<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>::__deallocate_node(std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, void*>*>*) + 140 (__hash_table:1538)
12 DEV APPPP 0x1061236f0 std::__1::__hash_table<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::__unordered_map_hasher<Prop, std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, true>, std::__1::__unordered_map_equal<Prop, std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::equal_to<Prop>, std::__1::hash<Prop>, true>, std::__1::allocator<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>::~__hash_table() + 48 (__hash_table:1478)
13 DEV APPPP 0x1061236b0 std::__1::__hash_table<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::__unordered_map_hasher<Prop, std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, true>, std::__1::__unordered_map_equal<Prop, std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>, std::__1::equal_to<Prop>, std::__1::hash<Prop>, true>, std::__1::allocator<std::__1::__hash_value_type<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>::~__hash_table() + 28 (__hash_table:1470)
14 DEV APPPP 0x106123684 std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>::~unordered_map[abi:v160006]() + 28 (unordered_map:1153)
15 DEV APPPP 0x106123658 std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>::~unordered_map[abi:v160006]() + 28 (unordered_map:1151)
16 DEV APPPP 0x10612362c std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>::~pair() + 32 (pair.h:63)
17 DEV APPPP 0x1061235fc std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>::~pair() + 28 (pair.h:63)
18 DEV APPPP 0x1061235d4 void std::__1::__destroy_at[abi:v160006]<std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, 0>(std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>*) + 24 (construct_at.h:66)
19 DEV APPPP 0x1061235b0 void std::__1::destroy_at[abi:v160006]<std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, 0>(std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>*) + 24 (construct_at.h:101)
20 DEV APPPP 0x1061234e8 void std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, void*>>>::destroy[abi:v160006]<std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, void, void>(std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, void*>>&, std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>*) + 28 (allocator_traits.h:323)
21 DEV APPPP 0x1061233f0 std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>>>::__deallocate_node(std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, void*>*>*) + 120 (__hash_table:1537)
22 DEV APPPP 0x106123350 std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>>>::~__hash_table() + 48 (__hash_table:1478)
23 DEV APPPP 0x106123310 std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>>>::~__hash_table() + 28 (__hash_table:1470)
24 DEV APPPP 0x1061232e4 std::__1::unordered_map<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>>>::~unordered_map[abi:v160006]() + 28 (unordered_map:1153)
25 DEV APPPP 0x1061232b8 std::__1::unordered_map<unsigned long, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::unordered_map<Prop, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>, std::__1::hash<Prop>, std::__1::equal_to<Prop>, std::__1::allocator<std::__1::pair<Prop const, std::__1::unique_ptr<facebook::jsi::PropNameID, std::__1::default_delete<facebook::jsi::PropNameID>>>>>>>>::~unordered_map[abi:v160006]() + 28 (unordered_map:1151)
26 DEV APPPP 0x10612328c PropNameIDCache::~PropNameIDCache() + 28 (TypedArray.cpp:41)
27 DEV APPPP 0x10611d7ec PropNameIDCache::~PropNameIDCache() + 28 (TypedArray.cpp:41)
28 libsystem_c.dylib 0x1800df97c __cxa_finalize_ranges + 420
29 libsystem_c.dylib 0x1800dfd04 exit + 28
30 UIKitCore 0x184d9e5a0 -[UIApplication _terminateWithStatus:] + 304
31 UIKitCore 0x1843bbcac -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 124
32 UIKitCore 0x1843bb990 -[_UISceneLifecycleMultiplexer forceExitWithTransitionContext:scene:] + 220
33 UIKitCore 0x184d94b64 -[UIApplication workspaceShouldExit:withTransitionContext:] + 180
34 FrontBoardServices 0x186177178 __63-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:]_block_invoke_2 + 76
35 FrontBoardServices 0x18615a160 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 232
36 FrontBoardServices 0x186177114 __63-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:]_block_invoke + 104
37 libdispatch.dylib 0x18010a5a4 _dispatch_client_callout + 16
38 libdispatch.dylib 0x18010ddb0 _dispatch_block_invoke_direct + 244
39 FrontBoardServices 0x18619d9a0 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 40
40 FrontBoardServices 0x18619d878 -[FBSSerialQueue _targetQueue_performNextIfPossible] + 176
41 FrontBoardServices 0x18619d9d0 -[FBSSerialQueue _performNextFromRunLoopSource] + 24
42 CoreFoundation 0x1803502c0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
43 CoreFoundation 0x1803501c8 __CFRunLoopDoSource0 + 200
44 CoreFoundation 0x18034f554 __CFRunLoopDoSources0 + 256
45 CoreFoundation 0x180349b9c __CFRunLoopRun + 744
46 CoreFoundation 0x1803493a8 CFRunLoopRunSpecific + 572
47 GraphicsServices 0x18c03c5ec GSEventRunModal + 160
48 UIKitCore 0x184d937ac -[UIApplication _run] + 992
49 UIKitCore 0x184d982e8 UIApplicationMain + 112
50 DEV APPPP 0x104fe2de0 main + 96 (main.m:8)
51 dyld_sim 0x10cb71ca0 start_sim + 20
52 dyld 0x10c5660e0 start + 2360
Description:
When react-native-mmkv
installed alongside with react-native-quick-crypto
, iOS app crashes when closed.
Root cause:
Both react-native-mmkv
and react-native-quick-crypto
implement nameToKindMap
in TypedArray.cpp
and MGLTypedArray.cpp
correspondingly.
std::unordered_map<std::string, MGLTypedArrayKind> nameToKindMap = {
{"Int8Array", MGLTypedArrayKind::Int8Array},
{"Int16Array", MGLTypedArrayKind::Int16Array},
{"Int32Array", MGLTypedArrayKind::Int32Array},
{"Uint8Array", MGLTypedArrayKind::Uint8Array},
{"Uint8ClampedArray", MGLTypedArrayKind::Uint8ClampedArray},
{"Uint16Array", MGLTypedArrayKind::Uint16Array},
{"Uint32Array", MGLTypedArrayKind::Uint32Array},
{"Float32Array", MGLTypedArrayKind::Float32Array},
{"Float64Array", MGLTypedArrayKind::Float64Array},
};
This way nameToKindMap
implicitly gets extern
linkage. So during the linking stage, the linker will resolve references to nameToKindMap
in MGLTypedArray.cpp
to the definition in TypedArray.cpp
which leads to "pointer being freed was not allocated" error when the app is closed.
Fix idea:
- Use different global object names. I.e. rename
nameToKindMap
to smth likenameToKindMapMmkv
inreact-native-mmkv
- Use
static
withnameToKindMap
inreact-native-mmkv
- Get rid of global unordered_map by adding if statements in
getTypedArrayKindForName
I personally fixed it by adding static
to nameToKindMap
definition
static std::unordered_map<std::string, TypedArrayKind> nameToKindMap = {
{"Int8Array", TypedArrayKind::Int8Array},
{"Int16Array", TypedArrayKind::Int16Array},
{"Int32Array", TypedArrayKind::Int32Array},
{"Uint8Array", TypedArrayKind::Uint8Array},
{"Uint8ClampedArray", TypedArrayKind::Uint8ClampedArray},
{"Uint16Array", TypedArrayKind::Uint16Array},
{"Uint32Array", TypedArrayKind::Uint32Array},
{"Float32Array", TypedArrayKind::Float32Array},
{"Float64Array", TypedArrayKind::Float64Array},
};