Comments on a number of StackOverflow questions have pointed out that a fault address of deadd00d indicates a deliberate VM abort.

I DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d

And indeed, when running the logs through ndk-stack, I see that the top of the stack frame decodes to:

Stack frame #00  pc 00050b0e  /system/lib/libdvm.so (dvmAbort)

Then the comments say to look earlier in your logs for the problem. What exactly am I looking for -- is there a particular tag or string to search for? (dalvikvm perhaps?) I've scrolled through many pages of logs without finding anything relevant -- is that normal, or should it be immediately before the fault?

The deadd00d most frequently happens inside a particular call to GetObjectClass(). I've tried calling env->ExceptionCheck immediately before that line, but it doesn't report any prior errors.

I've also tried turning on CheckJNI with

adb shell setprop debug.checkjni 1

per the instructions here and here, but when killing and re-launching the app, I don't see the expected message

D Late-enabling CheckJNI

but rather

D AndroidRuntime: CheckJNI is OFF

Using adb shell getprop indicates that the property really is on, so I'm not sure what's going on there.

Edit
Report