Android Marshmallow ART "Could not find native offset for dex" crash

Since December 2015, we encountered an unusual failure only on a limited number of devices running Android 6.0 and 6.0.1. Most of them are Nexus 5.

First, the accident log pulled from the Play Store. Looking int art_method.cc, it seems that mapping a particular method to native code fails. Maybe this is called compilation?

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/hammerhead/hammerhead:6.0.1/MMB29Q/2480792:user/release-keys'
Revision: '0'
ABI: 'arm'
pid: 18737, tid: 18737, name: omittedapp  >>> com.omitteddomain.omittedapp <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'art/runtime/art_method.cc:245] Failed to find native offset for dex pc 0x58 in android.view.View com.omitteddomain.omittedapp.PlotWidget.a(android.view.ViewGroup, android.view.LayoutInflater, java.util.List)'
    r0 00000000  r1 00004931  r2 00000006  r3 b6f24b7c
    r4 b6f24b84  r5 b6f24b34  r6 00000001  r7 0000010c
    r8 b4c3f800  r9 b4c3de44  sl b361d3db  fp b4c23450
    ip 00000006  sp beb2ca90  lr b6c93b61  pc b6c95f50  cpsr 40070010

backtrace:
    #00 pc 00041f50  /system/lib/libc.so (tgkill+12)
    #01 pc 0003fb5d  /system/lib/libc.so (pthread_kill+32)
    #02 pc 0001c30f  /system/lib/libc.so (raise+10)
    #03 pc 000194c1  /system/lib/libc.so (__libc_android_abort+34)
    #04 pc 000174ac  /system/lib/libc.so (abort+4)
    #05 pc 00333971  /system/lib/libart.so (art::Runtime::Abort()+228)
    #06 pc 000f45fb  /system/lib/libart.so (art::LogMessage::~LogMessage()+2226)
    #07 pc 000f08d1  /system/lib/libart.so (art::Barrier::~Barrier()+216)
    #08 pc 0035b473  /system/lib/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+162)
    #09 pc 00333a35  /system/lib/libart.so (art::Runtime::Abort()+424)
    #10 pc 000f45fb  /system/lib/libart.so (art::LogMessage::~LogMessage()+2226)
    #11 pc 000ef88b  /system/lib/libart.so (art::ArtMethod::ToNativeQuickPc(unsigned int, bool)+918)
    #12 pc 00329055  /system/lib/libart.so (art::CatchBlockStackVisitor::VisitFrame()+180)
    #13 pc 0033ccbd  /system/lib/libart.so (art::StackVisitor::WalkStack(bool)+224)
    #14 pc 0032910d  /system/lib/libart.so (art::QuickExceptionHandler::FindCatch(art::mirror::Throwable*)+92)
    #15 pc 0034a61d  /system/lib/libart.so (art::Thread::QuickDeliverException()+140)
    #16 pc 003fb7d9  /system/lib/libart.so (artThrowNullPointerExceptionFromCode+20)
    #17 pc 00a15f01  /data/app/com.omitteddomain.omittedapp-1/oat/arm/base.odex (offset 0x59d000)

It was reported the only occurrence of such a failure (here Android ART: "Could not find the Dex offset for the PC offset ...", " ) was potentially related to the problem of infinite recursion. Although we had an infinite recursion problem in the same" a "method, It has already been fixed.

Additional Information:

  • PlotWidget . "a". - .

  • .

  • , , ( , , ).

  • /, / , zipalign yes/no ..

Android Studio 1.5 SDK, API 23. API , , - .

.

+4

All Articles