20 February 2014

Native crash in unknown.unknown in Android

STORY:
I updated my Doms diagnostic tool recently, so I went to Developer Console few times to see is everything works smoothly.
Unfortunately I saw 1 crash Native crash in unknown.unknown (Report can be found on the end ).
Information looks useless, but if this happen to you, then follow this slides(By Ashish Agrawal ,who works for Motorola Mobility):
http://www.slideshare.net/AshishAgrawal22/android-crash-debugging-15694310

It will help you how to read report and where to looks for hint where more-less shit hit the fan.

In my case:

From report,following lines gives me few clues



  1. Build fingerprint: 'samsung/ja3gub/ja3g:4.3/JSS15J/I9500UBUEMK2:user/release-keys'
  2. signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr ede811cc
  3. #01 pc 00019557 /system/lib/libmedia_jni.so (android::sp<android::MediaRecorder>::sp(android::MediaRecorder*)


which means:



  • Crash happen on modern Samsung GT-I9500 on Android 4.3(SDK: 18). It means well-known manufacturer and decent version of Android. It means  random error, problem with specific device ,Android bug or my app do weird thing
  • It was caused by access violation 
  • I use MediaRecorder in one place and I have done some changes recently.

WHAT TO DO:


  • Read slides
  • Figure out is device is well-known (as if it happens on odd and unknown manufacture it usually means with device problem,not your application)
  • Check,what type of error is it (ANR, android exception, your exception, thread problem,caused by your app's thread or other, etc.)
  • Which android component was involved in crash(in my case MediaRecorder )
  • Search on internet for problems :)\
  • Ignore problem ,if occurred once,but if appear more often,then ... fight to the end or rollback recent changes. (if problem affect specific device ,then add them to not-compatible devices on Development Console).
  • Panic!


CONCLUSION:
I know,where more-less problem occurred, I  don't know why, how to reproduce and how to solve it.
I hope, it will help you to decode mysterious 'Native crash in unknown.unknown' error and narrow your finding where bug could occurred.


Resources:

Slides by Ashish Agrawal -  http://www.slideshare.net/AshishAgrawal22/android-crash-debugging-15694310
CRASH:
Native crash
in unknown.unknown

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/ja3gub/ja3g:4.3/JSS15J/I9500UBUEMK2:user/release-keys'
Revision: '10'
pid: 32556, tid: 32556, name: diagnostictools >>> dms.pastor.diagnostictools <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr ede811cc
r0 ede811c8 r1 befad378 r2 00000000 r3 40172064
r4 befad378 r5 76f4e0e8 r6 54e00021 r7 55900025
r8 5e10001d r9 6d814d2c sl 4195c788 fp befad3bc
ip 72ff79e4 sp befad368 lr 72fdd55b pc 401ab7bc cpsr 900f0030
d0 0000000000000000 d1 000000000000004c
d2 0000000000000000 d3 0000000000000000
d4 0000000000000000 d5 3f80000000000000
d6 3f80000000000000 d7 000000003f800000
d8 000000303f933333 d9 0000000042e40000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 ffffffffffffffff d17 40ba440000000000
d18 0000000000000000 d19 3ff0000000000000
d20 0000000000000000 d21 0000020000000000
d22 0000000000000000 d23 0000000000000000
d24 0000000000000000 d25 0000000000000000
d26 3ff0000000000000 d27 0000000000000000
d28 3ff0000000000000 d29 0000000000000000
d30 0000000000000000 d31 0000000000000000
scr 60000010

backtrace:
#00 pc 0000f7bc /system/lib/libutils.so (android::RefBase::incStrong(void const*) const+1)
#01 pc 00019557 /system/lib/libmedia_jni.so (android::sp<android::MediaRecorder>::sp(android::MediaRecorder*)+18)
#02 pc 00019d83 /system/lib/libmedia_jni.so
#03 pc 0001e90c /system/lib/libdvm.so (dvmPlatformInvoke+112)
#04 pc 0004eddb /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#05 pc 00027d20 /system/lib/libdvm.so
#06 pc 0002c2fc /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#07 pc 000611df /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+350)
#08 pc 00068ff7 /system/lib/libdvm.so
#09 pc 00027d20 /system/lib/libdvm.so
#10 pc 0002c2fc /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#11 pc 00060f21 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+292)
#12 pc 0004a9bb /system/lib/libdvm.so
#13 pc 00054fe7 /system/lib/libandroid_runtime.so
#14 pc 0005650f /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+378)
#15 pc 0000105b /system/bin/app_process
#16 pc 0000dc9b /system/lib/libc.so (__libc_init+50)
#17 pc 00000d7c /system/bin/app_process

code around pc:
401ab79c b538bd10 46084604 f7fd460d 6823e8be 
401ab7ac 46294602 689b4620 46204798 b510bd38 
401ab7bc 1d206844 e8a4f7fd f7fd4620 f1b0e8a2 
401ab7cc d1085f80 f04f4621 f7fd4070 68a0e91e 
401ab7dc 68996803 bd104788 6844b510 f7fd1d20 
401ab7ec 4620e890 e88cf7fd f1b0b138 d1085f80 
401ab7fc 4070f04f f7fd4621 68a0e908 68996803 
401ab80c bd104788 68186843 68804770 30044770 
401ab81c ba06f006 4604b538 460d3004 e8faf7fd 
401ab82c d1192801 07d968e3 6823d409 5f80f1b3 
401ab83c e00cd100 e8bd4620 f0064038 68a0b9d1 
401ab84c 694a6801 47904629 07c268e0 68a0d504 
401ab85c 6801b110 4790684a b570bd38 68444605 
401ab86c 4620460e e8d6f7fd d10b2801 463168a0 
401ab87c 68da6803 68e04790 d40307c0 46286829 
401ab88c 4798684b 46314620 4070e8bd bfc2f7ff 

code around lr:
72fdd538 bf00ba8f 0001326d 0001b0b4 4604b510 
72fdd548 b1316001 f853680b 18080c0c f7f74621 
72fdd558 4620ea82 0000bd10 4604b5f8 460e4d0c 
72fdd568 447d4617 f7f74628 4a0aec7a 46304639 
72fdd578 447a6833 3190f8d3 47986812 46204601 
72fdd588 ffdcf7ff f7f74628 4620ec8e bf00bdf8 
72fdd598 0001b57a 0001b55e 4606b5f8 460d481a 
72fdd5a8 461f4614 f7f74478 4a18ec5a 46284621 
72fdd5b8 447a682b 3190f8d3 47986812 46304601 
72fdd5c8 ffbcf7ff b1316839 f8506808 18c83c0c 
72fdd5d8 f7f74621 6832ea40 6811b132 0c0cf851 
72fdd5e8 18104621 ea3cf7f7 46284a09 682b4621 
72fdd5f8 f8d3447a 6812c1b4 47e0683b 44784805 
72fdd608 ec50f7f7 bdf84630 0001b538 0001b51e 
72fdd618 0001b4e0 0001b4de 4604b510 b1336803 
72fdd628 4621681a 0c0cf852 f7f71818 4620ea1a