The SIGSEGV in dvmInterpret() is in the jit code.
Most of the time the current JIT instruction is OP_IGET_OBJECT_QUICK (0xf4) or invoke-virtual-quick (0xf8).
In the first case, the object pointer can be 0x1 (r3 == 0x1 as it was in the stack of the interpreter), and so it SIGSEGV just after the checking if the pointer is NULL, while to access the field (r1 == 8).
In the second, the object pointer is valid (r9), so no problem with the check, but the clazz field is -1, so it SIGSEGV while accessing the vtable.
The SIGSEGV in dvmInterpret() is in the jit code. OBJECT_ QUICK (0xf4) or invoke- virtual- quick (0xf8).
Most of the time the current JIT instruction is OP_IGET_
In the first case, the object pointer can be 0x1 (r3 == 0x1 as it was in the stack of the interpreter), and so it SIGSEGV just after the checking if the pointer is NULL, while to access the field (r1 == 8).
In the second, the object pointer is valid (r9), so no problem with the check, but the clazz field is -1, so it SIGSEGV while accessing the vtable.