Android vitals crash logs deobfuscation pointing to wrong line numbers

Viewed 169

Ever since we switched to using App Signing by google play (https://support.google.com/googleplay/android-developer/answer/7384423) and uploading AABs instead of APKs our deobfuscation for crash logs hasn't been working properly. We used to have to manually upload our mapping file but it seems that this is no longer necessary.

As an example this is our most common crash cluster on the current build (published more than a week ago). This crash is from this morning so the automatically resolved mapping file should be there (I removed package and class name from the trace)

java.lang.NullPointerException: 
  at [REMOVED].onCreateView ([REMOVED].java:44)
  at android.support.v4.app.Fragment.performCreateView (Fragment.java:20)
  at android.support.v4.app.FragmentManagerImpl.a (FragmentManagerImpl.java:584)
  at android.support.v4.app.FragmentManagerImpl.f (FragmentManagerImpl.java:38)
  at android.support.v4.app.FragmentManagerImpl.a (FragmentManagerImpl.java:46)
  at android.support.v4.app.FragmentManagerImpl.e (FragmentManagerImpl.java:4)
  at android.support.v4.app.FragmentManagerImpl.o (FragmentManagerImpl.java:6)
  at android.support.v4.app.FragmentController.f (FragmentController.java:4)
  at android.support.v4.app.FragmentActivity.onStart (FragmentActivity.java:15)
  at android.support.v7.app.AppCompatActivity.onStart (AppCompatActivity.java)
  at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1395)
  at android.app.Activity.performStart (Activity.java:7348)
  at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3145)
  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:180)
  at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:165)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:142)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1955)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7078)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:964)

When i try to debug this custom fragment I noticed that line 44 is an empty line not even inside the OnCreateView lifecycle method which makes this stacktrace pretty useless.

Has anyone else experienced the same thing? Any suggestions would be appreciated

1 Answers

To have correct line numbers in Android vitals stack trace, in the proguard-rules.pro used to generate the AAB file I added the rule:

-keepattributes LineNumberTable,SourceFile

As suggested by alexgophermix. More details on Decode an obfuscated stack trace.

Related