5

since December 2015, we are experiencing a strange crash only on a limited number of devices running Android 6.0 and 6.0.1. Most of them are Nexus 5.

First the log of the crash pulled from the Play Store. Looking int art_method.cc, it looks like the mapping of a certain method to native code fails. Maybe it is compilation induced?

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
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)

The only other occurrence of a similar crash (here Android ART: "Failed to find Dex offset for PC offset ...") has been reported to be potentially related to an infinite recursion issue. While we had an infinite recursion issue in the very same "a" method, it has been already fixed.

Some additional info:

  1. The PlotWidget class in question display a chart to the user via a third party library. The cart view is configured inside the above "a" method. We changed the library multiple times with no difference in the outcome.

  2. All of the third party libraries are up to date.

  3. We have been able to test the app with the same data displayed to one of the afflicted user, without being able to reproduce the issue (being sensitive information, we were provided only the data strictly required to render the chart).

  4. Attempts to reproduce the issue have failed with every combination of configuration/flavor, proguard enabled/disabled, zipalign yes/no, etc.

The app is compiled with Android Studio 1.5, with the latest SDK, targeting API 23. Before setting a lower target API and release an useless update for the umpteenth time, I'd like to know is someone experienced and solved similar issues.

Any advice is welcome.

Community
  • 1
  • 1
sigsegv
  • 447
  • 8
  • 17

0 Answers0