Why are many Google Play crash reports still obfuscated?

Viewed 48

An Android app's package is submitted together with its mapping.txt. Some crash reports from Google Play are perfectly deobfuscated. However many reports' backtraces are not.

For example, I have to look up "net.my.android.foo.j2.V0" in mapping.txt for the following backtrace to find out it is a variable of a class. I have tried Google's Retrace tool but it does not do anything.

Could anyone shed some light on this? Is there an easy way to deobfuscate backtraces reported by Google Play without resorting to search mapping.txt?

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> net.my.app <<<

backtrace:
  #00  pc 0000000000089cd0  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164)
  #00  pc 00000000005666fc  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2308)
  #00  pc 0000000000013978  /system/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+76)
  #00  pc 0000000000006e18  /system/lib64/liblog.so (__android_log_assert+336)
  #00  pc 0000000000041f38  /system/lib64/libmedia_jni.so (android::JMediaCodec::configure(android::sp<android::AMessage> const&, android::sp<android::IGraphicBufferProducer> const&, android::sp<android::ICrypto> const&, android::sp<android::hardware::cas::native::V1_0::IDescrambler> const&, int)+488)
  #00  pc 0000000000045950  /system/lib64/libmedia_jni.so (android_media_MediaCodec_native_configure(_JNIEnv*, _jobject*, _jobjectArray*, _jobjectArray*, _jobject*, _jobject*, _jobject*, int)+588)
  #00  pc 0000000000253330  /system/framework/arm64/boot-framework.oat (art_jni_trampoline+272)
  #00  pc 0000000000676820  /system/framework/arm64/boot-framework.oat (android.media.MediaCodec.configure+1472)
  #00  pc 0000000000677484  /system/framework/arm64/boot-framework.oat (android.media.MediaCodec.configure+68)
  #00  pc 0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #00  pc 00000000001a9a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #00  pc 0000000000321270  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #00  pc 000000000031759c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996)
  #00  pc 00000000006862ac  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+848)
  #00  pc 000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #00  pc 0000000000387178  [anon:dalvik-classes.dex (net.my.android.b1.a+56)
  #00  pc 000000000068654c  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520)
  #00  pc 000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #00  pc 00000000003b59b0  [anon:dalvik-classes.dex (net.my.android.foo.j2.o0+4556)
  #00  pc 000000000068654c  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520)
  #00  pc 000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #00  pc 00000000003b061e  [anon:dalvik-classes.dex (net.my.android.foo.j2.I+126)
  #00  pc 000000000068bee0  /apex/com.android.art/lib64/libart.so (MterpInvokeDirectRange+852)
  #00  pc 000000000012ec14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct_range+20)
  #00  pc 00000000003b28e2  [anon:dalvik-classes.dex (net.my.android.foo.j2.K+3022)
  #00  pc 0000000000688bc8  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+1248)
  #00  pc 000000000012e914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
  #00  pc 00000000003bd5d2  [anon:dalvik-classes.dex (net.my.android.foo.j2.V0+4102)
  #00  pc 000000000030eb98  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.17742042824686272710)+268)
  #00  pc 0000000000674d30  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780)
  #00  pc 000000000013dff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #00  pc 00000000020edc08  /memfd:jit-cache (net.my.android.foo.j2.H+1624)
  #00  pc 0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #00  pc 00000000001a9a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #00  pc 0000000000321270  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #00  pc 000000000031759c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996)
  #00  pc 0000000000688928  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576)
  #00  pc 000000000012e914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
  #00  pc 00000000003bf802  [anon:dalvik-classes.dex (net.my.android.foo.j2.l1+1650)
  #00  pc 0000000000688bc8  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+1248)
  #00  pc 000000000012e914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
  #00  pc 00000000003b64fa  [anon:dalvik-classes.dex (net.my.android.foo.j2.x0+658)
  #00  pc 0000000000688bc8  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+1248)
  #00  pc 000000000012e914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
  #00  pc 00000000003ae224  [anon:dalvik-classes.dex (net.my.android.foo.j2.r)
  #00  pc 00000000006894a8  /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+1224)
  #00  pc 000000000012e994  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20)
  #00  pc 00000000003aba4c  [anon:dalvik-classes.dex (net.my.android.foo.e2.run+4)
  #00  pc 000000000030eb98  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.17742042824686272710)+268)
  #00  pc 0000000000674d30  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780)
  #00  pc 000000000013dff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #00  pc 000000000015ce98  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Thread.run+72)
  #00  pc 0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #00  pc 00000000001a9a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #00  pc 000000000055e24c  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460)
  #00  pc 00000000005ada10  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1308)
  #00  pc 00000000000eb7a8  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #00  pc 000000000008bc8c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
0 Answers
Related