Komentarze na temat wielu pytań StackOverflow wskazują, że adres faultd00d wskazuje celowe przerwanie VM.Android JNI: root-cause deadd00d (dvmAbort)
I DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
I rzeczywiście, gdy uruchomiony dzienniki poprzez NDK stosu, widzę, że w górnej części ramki stosu dekoduje do:
Stack frame #00 pc 00050b0e /system/lib/libdvm.so (dvmAbort)
Następnie komentarze powiedzieć patrzeć wcześniej w dziennikach dla problem. Czego dokładnie szukam - czy istnieje konkretny tag lub ciąg do wyszukania? (dalvikvm być może?) Przeszukałem wiele stron kłód, nie znajdując niczego istotnego - czy to normalne, czy powinno być tuż przed błędem?
Najczęściej zdarza się, że deadd00d znajduje się wewnątrz określonego połączenia z GetObjectClass(). Próbowałem wywoływać env-> ExceptionCheck bezpośrednio przed tą linią, ale nie zgłaszał żadnych wcześniejszych błędów.
Ja również próbował włączeniu CheckJNI z
adb shell setprop debug.checkjni 1
za instrukcjami here i here, ale kiedy zabijanie i ponownego uruchomienia aplikacji, nie widzę oczekiwaną wiadomość
D Late-enabling CheckJNI
ale raczej
D AndroidRuntime: CheckJNI is OFF
Korzystanie adb shell getprop
oznacza, że nieruchomość jest włączona, więc nie jestem pewien, co się tam dzieje.