Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS crash: malloc: *** error for object 0x282611260: pointer being freed was not allocated EXC_CRASH (SIGABRT) #649

Open
KirillRodichevUtorg opened this issue Mar 18, 2024 · 0 comments

Comments

@KirillRodichevUtorg
Copy link

KirillRodichevUtorg commented Mar 18, 2024

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:

  1. Use different global object names. I.e. rename nameToKindMap to smth like nameToKindMapMmkv in react-native-mmkv
  2. Use static with nameToKindMap in react-native-mmkv
  3. 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},
};
@KirillRodichevUtorg KirillRodichevUtorg changed the title iOS crash: malloc: *** error for object 0x282611260: pointer being freed was not allocated iOS crash: malloc: *** error for object 0x282611260: pointer being freed was not allocated EXC_CRASH (SIGABRT) Mar 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant