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

多进程修改数据; #387

Closed
dongxingrong opened this issue Feb 25, 2020 · 3 comments
Closed

多进程修改数据; #387

dongxingrong opened this issue Feb 25, 2020 · 3 comments

Comments

@dongxingrong
Copy link

mmkvdemo里有个testInterProcessLogic()方法执行会闪退;看逻辑是启动新进程去remove数据,再在主进程读取修改后的数据;试了一下先修改数据,再手动促发读取数据,还是会闪退;是否意味着mmkv无法进行多进程读写数据?

@lingol
Copy link
Collaborator

lingol commented Feb 25, 2020

MMKV is well performed in multi-process mode. Could you show the symbolized call stacks when it crashed in testInterProcessLogic()?

@dongxingrong
Copy link
Author

MMKV is well performed in multi-process mode. Could you show the symbolized call stacks when it crashed in testInterProcessLogic()?

2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at com.tencent.mmkv.MMKV.decodeInt(Native method)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at com.tencent.mmkv.MMKV.decodeInt(MMKV.java:321)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at com.tencent.mmkvdemo.MainActivity.testInterProcessLogic(MainActivity.java:161)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at com.tencent.mmkvdemo.MainActivity.onCreate(MainActivity.java:138)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.Activity.performCreate(Activity.java:7343)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.Activity.performCreate(Activity.java:7333)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1219)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3271)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3429)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.ActivityThread.-wrap12(ActivityThread.java:-1)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.os.Handler.dispatchMessage(Handler.java:109)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.os.Looper.loop(Looper.java:166)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at android.app.ActivityThread.main(ActivityThread.java:7555)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at java.lang.reflect.Method.invoke(Native method)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
2020-02-27 09:56:29.885 6110-6110/com.tencent.mmkvdemo A/zygote64: runtime.cc:536] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)

--------- beginning of crash
2020-02-27 09:56:29.886 6110-6110/com.tencent.mmkvdemo A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 6110 (encent.mmkvdemo), pid 6110 (encent.mmkvdemo)
2020-02-27 09:56:29.960 6152-6152/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2020-02-27 09:56:29.960 6152-6152/? A/DEBUG: Build fingerprint: 'HUAWEI/DUB-AL00/HWDUB-Q:8.1.0/HUAWEIDUB-AL00/116(C00):user/release-keys'
2020-02-27 09:56:29.961 6152-6152/? A/DEBUG: Revision: '0'
2020-02-27 09:56:29.961 6152-6152/? A/DEBUG: ABI: 'arm64'
2020-02-27 09:56:29.961 6152-6152/? A/DEBUG: pid: 6110, tid: 6110, name: encent.mmkvdemo >>> com.tencent.mmkvdemo <<<
2020-02-27 09:56:29.961 6152-6152/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: Abort message: 'java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: the return type of CallStaticIntMethodV does not match void com.tencent.mmkv.MMKV.onContentChangedByOuterProcess(java.lang.String)'
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x0 0000000000000000 x1 00000000000017de x2 0000000000000006 x3 0000000000000008
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x4 0000000015644fa8 x5 0000000015644fa8 x6 0000000015644fa8 x7 00000000001fffff
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x8 0000000000000083 x9 0000000010000000 x10 0000007fca80ce00 x11 7f8f201a543d3278
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x12 7f8f201a543d3278 x13 7f8f201a543d3278 x14 ffffffffffffffdf x15 00000061552ca000
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x16 0000007a59464a40 x17 0000007a57b7d668 x18 00000079d3e00080 x19 00000000000017de
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x20 00000000000017de x21 0000000000000083 x22 000000000000006e x23 00000000000011c1
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x24 00000079d3bdcd38 x25 00000079c53f3000 x26 00000000000011c0 x27 00000000000011c0
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: x28 0000000000000043 x29 0000007fca80ce40 x30 0000007a57b23370
2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: sp 0000007fca80ce00 pc 0000007a57b23398 pstate 0000000060000000
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: backtrace:
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #00 pc 000000000001e398 /system/lib64/libc.so (abort+120)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #1 pc 00000000004bf760 /system/lib64/libart.so (art::Runtime::Abort(char const*)+552)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #2 pc 00000000005c415c /system/lib64/libart.so (android::base::LogMessage::~LogMessage()+1048)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #3 pc 000000000032c5b8 /system/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1724)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #4 pc 000000000032c790 /system/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+108)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #5 pc 0000000000112634 /system/lib64/libart.so (art::ScopedCheck::AbortF(char const*, ...)+144)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #6 pc 0000000000115ed8 /system/lib64/libart.so (art::ScopedCheck::CheckMethodAndSig(art::ScopedObjectAccess&, _jobject*, _jclass*, _jmethodID*, art::Primitive::Type, art::InvokeType)+688)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #7 pc 0000000000114ac0 /system/lib64/libart.so (art::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+712)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #8 pc 000000000010486c /system/lib64/libart.so (art::CheckJNI::CallStaticIntMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+84)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #9 pc 0000000000013d98 /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/lib/arm64/libmmkv.so (_JNIEnv::CallStaticIntMethod(_jclass*, _jmethodID*, ...)+216)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #10 pc 000000000001408c /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/lib/arm64/libmmkv.so (mmkv::onContentChangedByOuterProcess(std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator> const&)+100)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #11 pc 000000000001cccc /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/lib/arm64/libmmkv.so (MMKV::notifyContentChanged()+48)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #12 pc 000000000001caec /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/lib/arm64/libmmkv.so (MMKV::checkLoadData()+312)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #13 pc 000000000001e094 /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/lib/arm64/libmmkv.so (MMKV::getDataForKey(std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator> const&)+44)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #14 pc 000000000001fb4c /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/lib/arm64/libmmkv.so (MMKV::getInt32ForKey(std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator> const&, int)+92)
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #15 pc 00000000000152d8 /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/lib/arm64/libmmkv.so
2020-02-27 09:56:29.974 6152-6152/? A/DEBUG: #16 pc 000000000000f8d8 /data/app/com.tencent.mmkvdemo-OBvcKxhJiUa4bpP_e6h-xg==/oat/arm64/base.odex (offset 0xf000)
2020-02-27 09:56:30.482 692-692/? E/qdlights: set_light_backlight_10000stage: brightness 334:

@lingol
Copy link
Collaborator

lingol commented Feb 27, 2020

2020-02-27 09:56:29.964 6152-6152/? A/DEBUG: Abort message: 'java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: the return type of CallStaticIntMethodV does not match void com.tencent.mmkv.MMKV.onContentChangedByOuterProcess(java.lang.String)'

Update to the latest version(v1.0.24) and try again. It's a typo error.

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