Skip to content

Minified exception class name is not resolved into the original class name #711

Closed
@ninniuz

Description

@ninniuz

If an app has no Proguard/R8 rule to keep Exception class names, then stacktraces on the website will miss the original class name.

it.ninniuz.myapplication.a: null
    at it.ninniuz.myapplication.MainActivity.onCreate(MainActivity.kt:22)
    at android.app.Activity.performCreate(Activity.java:7136)
    at android.app.Activity.performCreate(Activity.java:7127)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    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:858)

Excerpt from the JSON event:

"exception": {
  "values": [
    {
      "stacktrace": {},
      "type": "a",
      "module": "it.ninniuz.myapplication"
    }
  ]
}

Note that the proguard mapping file has got a reference to this class hence Sentry's symbolicmodule could be able to de-obfuscate this reference:


it.ninniuz.myapplication.CustomException -> it.ninniuz.myapplication.a:
    26:26:void <init>() -> <init>

I have tested de-obfuscating this class reference using the symbolic python module and this is indeed true.

It seems like Sentry backend service is not even trying to resolve <module>.<type> from exception.values items, but just stacktrace frames individually.

I have got a very simple project setup on sentry.io to reproduce the issue, if needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions