Robust
Robust copied to clipboard
多进程应用下的SIGBUS(BUS_ADRERR)错误
异常类型:app运行时异常
手机型号:REDMI K30,
手机系统版本:Android 10,
Robust版本:0.4.99
Gradle版本:5.4.1
系统:Android
堆栈/日志:
# Thread-13(9697) SIGBUS(BUS_ADRERR)
_#00 pc 0004c252 /apex/com.android.runtime/lib/libartbase.so (OpenArchiveInternal(ZipArchive*, char const*)+897) [armeabi-v7a]
2 #01 pc 00022e97 /apex/com.android.runtime/lib/libartbase.so (art::ZipArchive::OpenFromFd(int, char const*, std::__1::basic_string<char, std::__1::char_traits
_java:
12 android.app.DexLoadReporter.getDexoptNeeded(DexLoadReporter.java:101)
13 android.app.DexLoadReporter.notifyPackageManager(DexLoadReporter.java:162)
14 android.app.DexLoadReporter.report(DexLoadReporter.java:132)
15 dalvik.system.BaseDexClassLoader.reportClassLoaderChain(BaseDexClassLoader.java:191)
16 dalvik.system.DexPathList.makeDexElements(DexPathList.java:439)
17 dalvik.system.DexPathList.
后台监控此类型BUG数量上升很快,逐条查看后,发现都是日志信息都提到了xx.xx.xx:pushcore#Thread-13(9697)。 :pushcore进程是极光推送的所属进程, #Thread-13(9697) 是APP内将robust的初始化另开了线程,在此线程内初始化。 有疑问:
- 多进程应用,robust的初始化(即PatchExecutor的执行)能不能放在非主进程执行?
- 非主进程下报错,难道是ClassLoader的进程隔离会大概率影响到热修复类的加载?
- 初始化robust时,能不能放在单独的Thread里? eg: Thread { robust init code }.start()
+1
+1
+1