Efficient way to debug art crash issue

250 views
Skip to first unread message

David

unread,
Apr 13, 2016, 2:35:14 PM4/13/16
to android-porting
When porting a new android device base on AOSP 5.0.1, we experience random crash across Java process. 

From tombstone we see it mostly cause by GC check memory, such as

backtrace:
    #00 pc 00127e90  /system/lib/libart.so (art::gc::collector::MarkSweep::ProcessMarkStack(bool)+183)
    #01 pc 001284a1  /system/lib/libart.so (art::gc::collector::MarkSweep::MarkingPhase()+112)
    #02 pc 0012856f  /system/lib/libart.so (art::gc::collector::MarkSweep::RunPhases()+158)
    #03 pc 0011fad1  /system/lib/libart.so (art::gc::collector::GarbageCollector::Run(art::gc::GcCause, bool)+232)
    #04 pc 0013d1e7  /system/lib/libart.so (art::gc::Heap::CollectGarbageInternal(art::gc::collector::GcType, art::gc::GcCause, bool)+1398)
    #05 pc 0013e5a9  /system/lib/libart.so (art::gc::Heap::ConcurrentGC(art::Thread*)+48)
    #06 pc 000003df  /data/dalvik-cache/arm/system@framework@boot.oat


Sometimes it fails on JNI check:

backtrace:
    #00 pc 0003db54  /system/lib/libc.so (tgkill+12)
    #01 pc 00016db9  /system/lib/libc.so (pthread_kill+52)
    #02 pc 000179cf  /system/lib/libc.so (raise+10)
    #03 pc 00014171  /system/lib/libc.so (__libc_android_abort+36)
    #04 pc 000124f8  /system/lib/libc.so (abort+4)
    #05 pc 00216361  /system/lib/libart.so (art::Runtime::Abort()+160)
    #06 pc 000a6d75  /system/lib/libart.so (art::LogMessage::~LogMessage()+1312)
    #07 pc 000b09d5  /system/lib/libart.so (art::JniAbort(char const*, char const*)+1084)
    #08 pc 000b0f1f  /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+58)
    #09 pc 001c10bf  /system/lib/libart.so (art::JNI::ReleaseIntArrayElements(_JNIEnv*, _jintArray*, int*, int)+470)
    #10 pc 000140f1  /system/lib/libjavacore.so


The crash usually caused by access invalid memory or GC detect invalid access.

We know this may be caused by head corruption, but it is very hard to find who trashes the memory.

We follow the instruction from Google pages but still no good luck.


Any suggest to fight such kind of bugs?
Reply all
Reply to author
Forward
0 new messages