BoostMultiDex
BoostMultiDex copied to clipboard
__futex_syscall3
#00 pc 0000000000021b48 /system/lib/libc.so (__futex_syscall3+8)
#00 pc 000000000000e8b4 /system/lib/libc.so
#00 pc 0000000000052715 /system/lib/libdvm.so (dvmLinearAlloc(Object*, unsigned int)+24)
#00 pc 000000000006f47f /system/lib/libdvm.so
#00 pc 0000000000068f55 /system/lib/libdvm.so
#00 pc 0000000000000214 /dev/ashmem/dalvik-jit-code-cache (deleted)
接入后GP后台Android4.4版本开始出现较多__futex_syscall3异常,本地也偶尔能在首次启动的时候复现,怀疑是在系统资源(cpu/内存)紧缺下,可能会被系统杀死的情况
查看BoostMultiDex的文章是有介绍使用到libdvm.so,怀疑是4.4这个LinearAlloc上限比较低,分配失败导致的crash
using func = int (*)(constchar* fileName, constchar* odexOutputName, void* ppRawDexFile, bool isBootstrap);
void* handler = dlopen("libdvm.so", RTLD_NOW);
dvmRawDexFileOpen = (func) dlsym(handler, "_Z17dvmRawDexFileOpenPKcS0_PP10RawDexFileb");
dvmRawDexFileOpen(file_path, opt_file_path, &arg, false);