Сбой в вызове JNI из /system/framework/arm/boot-framework.oat
Я сталкиваюсь с этим странным сбоем в system_server на моем устройстве, работающем на MTK HW с последней версией Android N, где обратная трассировка указывает на сбой в вызове JNI, произошедшем из /system/framework/arm/boot-framework.oat. Я не могу понять, как отлаживать этот сбой, так как он не является ни кодом Java, ни реальной частью c / C++ встроенной библиотеки.
Я чувствую, что это где-то посередине обоих, так как происходит сбой с SIGSEGV, и обратная трассировка не указывает на то, что разделяемая библиотека имеет фактическую реализацию собственного вызова.
Интересно отметить, что адрес ошибки всегда 0x10. проблема не легко воспроизводима.
Пожалуйста, предложите, как отладить такой сбой. Любая помощь будет принята с благодарностью.
например, одна такая бактрия -
Отпечаток пальца сборки: "XYZ/ABC/ABC:7.1.2/NZH54D/0152310: пользовательские / клавиши разблокировки"
Редакция: "0"
ABI: "рука"
pid: 1804, tid: 1814, имя: Binder:1804_1 >>> system_server <<<
сигнал 11 (SIGSEGV), код 1 (SEGV_MAPERR), адрес ошибки 0x10
r0 00000000 r1 d80f35c6 r2 00000000 r3 00000000
r4 70edda68 r5 00002759 r6 712de7bc r7 12de17a0
r8 00000000 r9 ac783000 sl ac9626fc fp ffffffff
ip 00000000 sp ac960f24 lr adb05c11 pc 7445198e cpsr 600b0030
d0 006e006f00690074 d1 006f002f0030002f
d2 0064002e00670072 d3 00640069006f0072
d4 006e002e00760074 d5 0076007400740065
d6 0069006700650072 d7 0061007200740073
d8 0000000000000000 d9 0000000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 00000000024aef90 d17 00000000022e8888
d18 00000000024ae790 d19 00000000022e8388
d20 0000000000000000 d21 0000000000000000
d22 d762c4e3e31ef623 d23 2ec7d021e172f340
d24 213dec24a83d36ce d25 a5d214f608e470a4
d26 0000000100000000 d27 0000000100000000
d28 0000000100000001 d29 0000000100000001
d30 0000000000000000 d31 0000000000cbd10d
scr 80000093
трассировка:
#00 pc 01bd298e /system/framework/arm/boot-framework.oat (offset 0x15a3000) (android.os.Parcel.nativeWriteInt+121)
#01 pc 01bd918d /system/framework/arm/boot-framework.oat (offset 0x15a3000) (android.os.Parcel.writeInt+56)
#02 pc 017cc87d /system/framework/arm/boot-framework.oat (offset 0x15a3000) (android.content.pm.ApplicationInfo.writeToParcel+616)
#03 pc 017c89fb /system/framework/arm/boot-framework.oat (offset 0x15a3000) (android.content.pm.ComponentInfo.writeToParcel+110)
#04 pc 01817f15 /system/framework/arm/boot-framework.oat (offset 0x15a3000) (android.content.pm.ProviderInfo.writeToParcel+48)
#05 pc 0168a325 /system/framework/arm/boot-framework.oat (offset 0x15a3000) (android.app.IActivityManager$ContentProviderHolder.writeToParcel+48)
#06 pc 000a9a41 /system/lib/libart.so (art_quick_invoke_stub_internal+64)
#07 pc 0040554d /system/lib/libart.so (art_quick_invoke_stub+232)
#08 pc 000b0cd5 /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+136)
#09 pc 001ed20d /system/lib/libart.so (_ZN3art11interpreter34ArtInterpreterToCompiledCodeBridgeEPNS_6ThreadEPNS_9ArtMethodEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+200)
#10 pc 001e77bd /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+492)
#11 pc 003ff9c7 /system/lib/libart.so (MterpInvokeVirtualQuick+322)
#12 pc 000a0614 /system/lib/libart.so (ExecuteMterpImpl+29972)
#13 pc 001caae7 /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+290)
#14 pc 001cf5b9 /system/lib/libart.so (_ZN3art11interpreter30EnterInterpreterFromEntryPointEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameE+92)
#15 pc 003f49f7 /system/lib/libart.so (artQuickToInterpreterBridge+706)
#16 pc 000ae493 /system/lib/libart.so (art_quick_to_interpreter_bridge+34)
#17 pc 00f046bd /system/framework/oat/arm/services.odex (offset 0xcdd000)