Meituan-Dianping / Robust

Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Apache License 2.0
4.42k stars 807 forks source link

在加载补丁包的时候出现 SIGBUS(BUS_ADRERR) crash,具体堆栈如下 #403

Closed zhongxuerui521 closed 4 years ago

zhongxuerui521 commented 4 years ago

我们在加载补丁包的时候出现 SIGBUS(BUS_ADRERR) crash,大部分集中在6.0的Android系统,其他android7.0~9.0也有少部分,有很大部分用户是正常的。 具体堆栈如下:

1 #00 pc 003e3cc6 /system/lib/libart.so (artSetObjInstanceFromCode+473) [armeabi-v7a]

2 #01 pc 00375b93 /system/lib/libart.so (art::ZipArchive::OpenFromFd(int, char const, std::1::basic_string<char, std::__1::char_traits, std::1::allocator >)+22) [armeabi-v7a] 3 #02 pc 00153beb /system/lib/libart.so (art::DexFile::GetChecksum(char const, unsigned int, std::1::basic_string<char, std::__1::char_traits, std::1::allocator >)+94) [armeabi-v7a] 4 #03 pc 002d58f1 /system/lib/libart.so (art::OatFileAssistant::GetRequiredDexChecksum()+44) [armeabi-v7a] 5 #04 pc 002d5a29 /system/lib/libart.so (art::OatFileAssistant::GivenOatFileIsOutOfDate(art::OatFile const&)+28) [armeabi-v7a] 6 #05 pc 002d5cbb /system/lib/libart.so (art::OatFileAssistant::GivenOatFileIsUpToDate(art::OatFile const&)+14) [armeabi-v7a] 7 #06 pc 00114021 /system/lib/libart.so (art::ClassLinker::OpenDexFilesFromOat(char const, char const, std::1::vector<std::1::basic_string<char, std::1::char_traits, std::1::allocator >, std::1::allocator<std::__1::basic_string<char, std::1::char_traits, std::__1::allocator > > >)+256) [armeabi-v7a] 8 #07 pc 002a69b5 /system/lib/libart.so (art::mirror::Object art::gc::Heap::AllocObject<true, art::mirror::CopyObjectVisitor>(art::Thread, art::mirror::Class*, unsigned int, art::mirror::CopyObjectVisitor const&)+532) [armeabi-v7a] 9 #08 pc 0247063b /data/dalvik-cache/arm/system@framework@boot.oat (oatexec+2111035) [armeabi] 10 java: 11 dalvik.system.DexFile.openDexFile(DexFile.java:295) 12 dalvik.system.DexFile.(DexFile.java:111) 13 dalvik.system.DexFile.loadDex(DexFile.java:151) 14 dalvik.system.DexPathList.loadDexFile(DexPathList.java:294) 15 dalvik.system.DexPathList.makePathElements(DexPathList.java:260) 16 dalvik.system.DexPathList.(DexPathList.java:120) 17 dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:48) 18 dalvik.system.DexClassLoader.(DexClassLoader.java:57) 19 com.meituan.robust.PatchExecutor.boolean patch(android.content.Context,com.meituan.robust.Patch)(SourceFile:96) 20 com.meituan.robust.PatchExecutor.void applyPatchList(java.util.List)(SourceFile:64) 21 com.meituan.robust.PatchExecutor.void run()(SourceFile:34)

注:集成robust的版本号:0.4.91 请问是哪里出错了,要怎么解决,谢谢

zhongxuerui521 commented 4 years ago

multidex没有全部加载完就加载补丁导致的,已经解决