I've encountered a crash in dalvik in Android 4.3-r2.2 in dvmInterpFindInterfaceMethod(). If I look at the assembly, I think the crash occurs when deferencing absMethod, which is provided by dvmDexGetResolvedMethod(). The process was android.process.acore, which appears to be the UserDictionaryProvider app. I think frame #03 indicates we're trying to call an interface method, and looking at the dalvik instructions for UserDictonaryProvider.apk, it looks like the only invoke-interface commands were for java.util.List and android.database.Cursor.
Can anyone provide any details on what sort of situation would cause a SIGSEGV here? I'd like to understand what happened. I/DEBUG ( 2760): pid: 4370, tid: 4370, name: d.process.acore >>> android.process.acore <<< I/DEBUG ( 2760): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0e261645 I/DEBUG ( 2760): r0 0e261645 r1 00002a94 r2 b376a718 r3 b314f4a8 I/DEBUG ( 2760): r4 00000003 r5 b44dacd0 r6 b4ae5e00 r7 00002072 I/DEBUG ( 2760): r8 b66b6dc0 r9 b4c85ea0 sl b3168380 fp be80a9c0 I/DEBUG ( 2760): ip b350fe50 sp be80a848 lr b66b8a6c pc b66c3b6c cpsr 20000010 I/DEBUG ( 2760): d0 4040000000000003 d1 0000006342c618e0 I/DEBUG ( 2760): d2 42746265a9915000 d3 7e37e43c8800759c I/DEBUG ( 2760): d4 8000000000000000 d5 3f00000004ef6d80 I/DEBUG ( 2760): d6 3fc999999999999a d7 4000000040000000 I/DEBUG ( 2760): d8 0000000000000000 d9 0000000000000000 I/DEBUG ( 2760): d10 0000000000000000 d11 0000000000000000 I/DEBUG ( 2760): d12 0000000000000000 d13 0000000000000000 I/DEBUG ( 2760): d14 0000000000000000 d15 0000000000000000 I/DEBUG ( 2760): scr 80000010 I/DEBUG ( 2760): I/DEBUG ( 2760): backtrace: I/DEBUG ( 2760): #00 pc 0002ab6c /system/lib/libdvm.so (dvmInterpFindInterfaceMethod(ClassObject*, unsigned int, Method const*, DvmDex*)+40) I/DEBUG ( 2760): #01 pc 0001fa68 /system/lib/libdvm.so I/DEBUG ( 2760): #02 pc 0002b5ec /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184) I/DEBUG ( 2760): #03 pc 0005ff35 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+292) I/DEBUG ( 2760): #04 pc 00049b87 /system/lib/libdvm.so I/DEBUG ( 2760): #05 pc 0003cc3d /system/lib/libdvm.so I/DEBUG ( 2760): #06 pc 0004b68f /system/lib/libandroid_runtime.so I/DEBUG ( 2760): #07 pc 0004c30f /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+378) I/DEBUG ( 2760): #08 pc 0000105b /system/bin/app_process I/DEBUG ( 2760): #09 pc 0000db4f /system/lib/libc.so (__libc_init+50) I/DEBUG ( 2760): #10 pc 00000d7c /system/bin/app_process I/DEBUG ( 2760): memory map around fault addr 0e261645: I/DEBUG ( 2760): (no map below) I/DEBUG ( 2760): (no map for address) I/DEBUG ( 2760): af13c000-af23a000 r-- /dev/binder (gdb) list *0x2ab6c 0x2ab6c is in dvmInterpFindInterfaceMethod(ClassObject*, unsigned int, Method const*, DvmDex*) (dalvik/vm/interp/Interp.cpp:1253). 1248 * The verifier does not guarantee that objects stored into 1249 * interface references actually implement the interface, so this 1250 * check cannot be eliminated. 1251 */ 1252 for (i = 0; i < thisClass->iftableCount; i++) { 1253 if (thisClass->iftable[i].clazz == absMethod->clazz) 1254 break; 1255 } 1256 if (i == thisClass->iftableCount) { 1257 /* impossible in verified DEX, need to check for it in unverified */ -- -- unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting --- You received this message because you are subscribed to the Google Groups "android-porting" group. To unsubscribe from this group and stop receiving emails from it, send an email to android-porting+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.