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

libmmkv.so null pointer dereference #504

Closed
lovetomatoo opened this issue Aug 3, 2020 · 12 comments
Closed

libmmkv.so null pointer dereference #504

lovetomatoo opened this issue Aug 3, 2020 · 12 comments

Comments

@lovetomatoo
Copy link

lovetomatoo commented Aug 3, 2020

platform:java
mmkv version:1.2.1

log:

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x4
Cause: null pointer dereference
r0 55059550 r1 258d8f72 r2 e7c928fc r3 00000000
r4 c38fa5fc r5 c38fa5fc r6 00000000 r7 c38fa5e0
r8 00000001 r9 00000000 r10 00000000 r11 c38fa714
ip 00000008 sp c38fa5c0 lr 00000008 pc c35958c8

backtrace:
#00 pc 000078c8 xxx/lib/arm/libmmkv.so (BuildId: cdc1539df1851c42d0cfa129ee675b078b960eb0)
#1 pc 000086cd xxx/lib/arm/libmmkv.so (BuildId: cdc1539df1851c42d0cfa129ee675b078b960eb0)
#2 pc 00004a05 xxx/lib/arm/libmmkv.so (BuildId: cdc1539df1851c42d0cfa129ee675b078b960eb0)
#3 pc 00002fcf xxx/lib/arm/libmmkv.so (BuildId: cdc1539df1851c42d0cfa129ee675b078b960eb0)
#4 pc 0004bacd /data/dalvik-cache/arm/[email protected] (art_jni_trampoline+116)
#5 pc 000e1bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#6 pc 00450e0f /apex/com.android.runtime/lib/libart.so (art_quick_invoke_static_stub+246) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#7 pc 000ea009 /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+180) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#8 pc 0021b863 /apex/com.android.runtime/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+274) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#9 pc 002179cb /apex/com.android.runtime/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+802) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#10 pc 004484cb /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+318) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#11 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#12 pc 00597272 /data/dalvik-cache/arm/xxx@[email protected] (com.tencent.mmkv.MMKV.defaultMMKV+30)
#13 pc 00448731 /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+932) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#14 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#15 pc 0048d5e8 /data/dalvik-cache/arm/[email protected] (com.xxx.dvn.bLV)
#16 pc 00448731 /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+932) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#17 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#18 pc 0048d6b0 /data/dalvik-cache/arm/[email protected] (com.xxx.dvn.putBoolean)
#19 pc 00448731 /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+932) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#20 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#21 pc 0047c942 /data/dalvik-cache/arm/[email protected] (com.xxx.dmp.aoD+42)
#22 pc 0044b7cb /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtualQuick+1170) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#23 pc 000e0594 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual_quick+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#24 pc 0047c39c /data/dalvik-cache/arm/[email protected] (com.xxx.dmp.+144)
#25 pc 0044802b /apex/com.android.runtime/lib/libart.so (MterpInvokeDirect+994) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#26 pc 000dc914 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_direct+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#27 pc 0047c426 /data/dalvik-cache/arm/[email protected] (com.xxx.dmp.bDh+26)
#28 pc 001f7b6d /apex/com.android.runtime/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.17840058838137626416+268) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#29 pc 001fc329 /apex/com.android.runtime/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+120) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#30 pc 0043a1ed /apex/com.android.runtime/lib/libart.so (artQuickToInterpreterBridge+832) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#31 pc 000e65a1 /apex/com.android.runtime/lib/libart.so (art_quick_to_interpreter_bridge+32) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#32 pc 000e1bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#33 pc 00450e0f /apex/com.android.runtime/lib/libart.so (art_quick_invoke_static_stub+246) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#34 pc 000ea009 /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+180) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#35 pc 0021b863 /apex/com.android.runtime/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+274) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#36 pc 002179cb /apex/com.android.runtime/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+802) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#37 pc 004484cb /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+318) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#38 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#39 pc 0045f45a /data/dalvik-cache/arm/[email protected] (com.xxx.dca.+66)
#40 pc 0044802b /apex/com.android.runtime/lib/libart.so (MterpInvokeDirect+994) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#41 pc 000dc914 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_direct+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#42 pc 0045f51a /data/dalvik-cache/arm/[email protected] (com.xxx.dca.bqz+26)
#43 pc 001f7b6d /apex/com.android.runtime/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.17840058838137626416+268) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#44 pc 001fc329 /apex/com.android.runtime/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+120) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#45 pc 0043a1ed /apex/com.android.runtime/lib/libart.so (artQuickToInterpreterBridge+832) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#46 pc 000e65a1 /apex/com.android.runtime/lib/libart.so (art_quick_to_interpreter_bridge+32) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#47 pc 000e1bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#48 pc 00450e0f /apex/com.android.runtime/lib/libart.so (art_quick_invoke_static_stub+246) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#49 pc 000ea009 /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+180) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#50 pc 0021b863 /apex/com.android.runtime/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+274) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#51 pc 002179cb /apex/com.android.runtime/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+802) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#52 pc 004484cb /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+318) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#53 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#54 pc 00477210 /data/dalvik-cache/arm/[email protected] (com.xxx.dme.bqA)
#55 pc 00448731 /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+932) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#56 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#57 pc 004ee0aa /data/dalvik-cache/arm/[email protected] (com.xxx.input.layout.share.FileProvider.N+290)
#58 pc 00448731 /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+932) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#59 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#60 pc 004edf06 /data/dalvik-cache/arm/[email protected] (com.xxx.input.layout.share.FileProvider.M+26)
#61 pc 00448731 /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+932) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#62 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#63 pc 004ee0dc /data/dalvik-cache/arm/[email protected] (com.xxx.input.layout.share.FileProvider.O)
#64 pc 00448731 /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+932) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#65 pc 000dc994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#66 pc 00bc3d00 /data/dalvik-cache/arm/[email protected] (com.xxx.input.layout.share.FileProvider$1.run+16)
#67 pc 001f7b6d /apex/com.android.runtime/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.17840058838137626416+268) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#68 pc 001fc329 /apex/com.android.runtime/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+120) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#69 pc 0043a1ed /apex/com.android.runtime/lib/libart.so (artQuickToInterpreterBridge+832) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#70 pc 000e65a1 /apex/com.android.runtime/lib/libart.so (art_quick_to_interpreter_bridge+32) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#71 pc 000e1bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#72 pc 00450cfb /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub+250) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#73 pc 000e9ff5 /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+160) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#74 pc 0038f94f /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+54) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#75 pc 00390659 /apex/com.android.runtime/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+300) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#76 pc 003c398f /apex/com.android.runtime/lib/libart.so (art::Thread::CreateCallback(void*)+966) (BuildId: b62a2189eba6b2aa78d2e4091bd78142)
#77 pc 0009c587 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20) (BuildId: d357308142fd9e779d15a6beaf102b48)
#78 pc 00055a37 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) (BuildId: d357308142fd9e779d15a6beaf102b48)

@lingol
Copy link
Collaborator

lingol commented Aug 3, 2020

Please follow the issue template, provide detailed info such as platform, version of MMKV, detailed crash stacks, logs of MMKV, etc.

@lovetomatoo
Copy link
Author

Please follow the issue template, provide detailed info such as platform, version of MMKV, detailed crash stacks, logs of MMKV, etc.

updated

@lingol
Copy link
Collaborator

lingol commented Aug 3, 2020

Duplicate with #493. We still have no clue. What's the log of MMKV (in the logcat) when this happened? And can you reproduce it in a demo project?

GUOLING-MC5:~/D/mmkv-1.2.1-so-symbols$ gaddr2line -Cf -b elf32-littlearm -e armeabi-v7a/libmmkv.so 000078c8 000086cd 00004a05 00002fcf

std::__ndk1::__bucket_list_deallocator<std::__ndk1::allocator<std::__ndk1::__hash_node_base<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >, MMKV*>, void*>>> >::size() const
/Users/lingol/Library/Android/sdk/android-ndk-r16b/sources/cxx-stl/llvm-libc++/include/__hash_table:815
std::__ndk1::unordered_map<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >, MMKV*, std::__ndk1::hash<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > >, std::__ndk1::equal_to<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const, MMKV*> > >::find(std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&)
/Users/lingol/Library/Android/sdk/android-ndk-r16b/sources/cxx-stl/llvm-libc++/include/unordered_map:1102
MMKV::defaultMMKV(MMKVMode, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >)
/Users/lingol/Developer/mmkv/Core/MMKV.cpp:134
mmkv::getDefaultMMKV(_JNIEnv
, _jobject*, int, _jstring*)
/Users/lingol/Developer/mmkv/Android/MMKV/mmkv/.cxx/cmake/SharedCppRelease/armeabi-v7a/../../../../src/main/cpp/native-bridge.cpp:319

@lingol
Copy link
Collaborator

lingol commented Aug 3, 2020

By the way, you might consider upgrade MMKV to v1.2.2.

@lovetomatoo
Copy link
Author

Duplicate with #493. We still have no clue. What's the log of MMKV (in the logcat) when this happened? And can you reproduce it in a demo project?

GUOLING-MC5:~/D/mmkv-1.2.1-so-symbols$ gaddr2line -Cf -b elf32-littlearm -e armeabi-v7a/libmmkv.so 000078c8 000086cd 00004a05 00002fcf
std::__ndk1::__bucket_list_deallocator<std::__ndk1::allocator<std::__ndk1::__hash_node_base<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >, MMKV*>, void*>>> >::size() const
/Users/lingol/Library/Android/sdk/android-ndk-r16b/sources/cxx-stl/llvm-libc++/include/__hash_table:815
std::__ndk1::unordered_map<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >, MMKV*, std::__ndk1::hash<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > >, std::__ndk1::equal_to<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const, MMKV*> > >::find(std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&)
/Users/lingol/Library/Android/sdk/android-ndk-r16b/sources/cxx-stl/llvm-libc++/include/unordered_map:1102
MMKV::defaultMMKV(MMKVMode, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >_)
/Users/lingol/Developer/mmkv/Core/MMKV.cpp:134
mmkv::getDefaultMMKV(JNIEnv, _jobject*, int, _jstring*)
/Users/lingol/Developer/mmkv/Android/MMKV/mmkv/.cxx/cmake/SharedCppRelease/armeabi-v7a/../../../../src/main/cpp/native-bridge.cpp:319

The crash occurred during a monkey test, and it happened 100 times. I will upload the additional log to the attachment later

@lingol
Copy link
Collaborator

lingol commented Aug 3, 2020

Are there any other native libs that also include libc++_shared.so? Maybe you should use mmkv-static.

    implementation 'com.tencent:mmkv-static:1.2.2'

@lovetomatoo
Copy link
Author

lovetomatoo commented Aug 3, 2020

Duplicate with #493. We still have no clue. What's the log of MMKV (in the logcat) when this happened? And can you reproduce it in a demo project?

GUOLING-MC5:~/D/mmkv-1.2.1-so-symbols$ gaddr2line -Cf -b elf32-littlearm -e armeabi-v7a/libmmkv.so 000078c8 000086cd 00004a05 00002fcf
std::__ndk1::__bucket_list_deallocator<std::__ndk1::allocator<std::__ndk1::__hash_node_base<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >, MMKV*>, void*>>> >::size() const
/Users/lingol/Library/Android/sdk/android-ndk-r16b/sources/cxx-stl/llvm-libc++/include/__hash_table:815
std::__ndk1::unordered_map<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >, MMKV*, std::__ndk1::hash<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > >, std::__ndk1::equal_to<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const, MMKV*> > >::find(std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&)
/Users/lingol/Library/Android/sdk/android-ndk-r16b/sources/cxx-stl/llvm-libc++/include/unordered_map:1102
MMKV::defaultMMKV(MMKVMode, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator >_)
/Users/lingol/Developer/mmkv/Core/MMKV.cpp:134
mmkv::getDefaultMMKV(JNIEnv, _jobject*, int, _jstring*)
/Users/lingol/Developer/mmkv/Android/MMKV/mmkv/.cxx/cmake/SharedCppRelease/armeabi-v7a/../../../../src/main/cpp/native-bridge.cpp:319

The crash occurred during a monkey test, and it happened 100 times. I will upload the additional log to the attachment later.(I need to assess whether the overall log can be provided)

This problem has a great influence on us, If it is convenient for you, I can leave a WeChat to locate the problem, my WeChat is [deleted], thanks.

@lingol
Copy link
Collaborator

lingol commented Aug 3, 2020

Are there any other native libs that also include libc++_shared.so? Maybe you should use mmkv-static.

    implementation 'com.tencent:mmkv-static:1.2.2'

No need to add WeChat. You can try this, as I told you before.

@lovetomatoo
Copy link
Author

Are there any other native libs that also include libc++_shared.so? Maybe you should use mmkv-static.

    implementation 'com.tencent:mmkv-static:1.2.2'

No need to add WeChat. You can try this, as I told you before.

Ok, I will try it.

@lingol
Copy link
Collaborator

lingol commented Aug 12, 2020

Any updates?

@lovetomatoo
Copy link
Author

Any updates?

I updated the latest version, but did not fix the problem.But I may have found the cause of the problem, MMKV is initialized in the onCreate of Application,I have a provider in my project that performs some callback before the onCreate execution of the application,Provider will use MMKV.DefaultMMKV () on IO thread.

it not throw [You should Call MMKV.initialize() first.], but occasionally they crash.

@lingol
Copy link
Collaborator

lingol commented Aug 13, 2020

OK.

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

2 participants