"Caused by" exception should be the signature
Categories
(Socorro :: Signature, defect, P2)
Tracking
(Not tracked)
People
(Reporter: agi, Unassigned)
References
(Depends on 1 open bug, Blocks 2 open bugs)
Details
Related to Bug 1693863, I just noticed that when there is a dependent exception, Socorro uses the top exception to determine the signature, while I think the "bottom" exception is the most significant one.
Take for example: https://crash-stats.mozilla.org/report/index/ad1e4a11-6560-4313-be52-ce7060210314
The full stacktrace is
org.mozilla.geckoview.GeckoResult$UncaughtException: java.lang.NullPointerException: Attempt to invoke interface method 'org.mozilla.geckoview.WebExtension$ActionDelegate org.mozilla.geckoview.WebExtension$DelegateController.getActionDelegate()' on a null object reference
at org.mozilla.geckoview.GeckoResult.dispatchLocked(GeckoResult.java:4)
at org.mozilla.geckoview.GeckoResult.completeExceptionally(GeckoResult.java:4)
at org.mozilla.geckoview.GeckoResult.lambda$thenInternal$4$GeckoResult(GeckoResult.java:10)
at org.mozilla.geckoview.-$$Lambda$GeckoResult$-hYJKiV7OmgfRN8NZFvKg9ij7nk.run(Unknown Source:8)
at org.mozilla.geckoview.GeckoResult.lambda$dispatchLocked$5(GeckoResult.java:2)
at org.mozilla.geckoview.-$$Lambda$GeckoResult$itcI1hkT0606QBUv3dYAZ4ertbk.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'org.mozilla.geckoview.WebExtension$ActionDelegate org.mozilla.geckoview.WebExtension$DelegateController.getActionDelegate()' on a null object reference
at org.mozilla.geckoview.WebExtension$Action.lambda$click$0$WebExtension$Action(WebExtension.java:2)
at org.mozilla.geckoview.-$$Lambda$WebExtension$Action$LKJClgXm-kzeWs1XkJNxnbyR7uQ.accept(Unknown Source:4)
at org.mozilla.geckoview.GeckoResult.lambda$accept$2(GeckoResult.java:1)
at org.mozilla.geckoview.-$$Lambda$GeckoResult$jOTMkpkhFSpBCw69vbWxDq7m7Tw.onValue(Unknown Source:2)
at org.mozilla.geckoview.GeckoResult.lambda$thenInternal$4$GeckoResult(GeckoResult.java:2)
... 10 more
Socorro uses the org.mozilla.geckoview.GeckoResult$UncaughtException
as the signature, while java.lang.NullPointerException: Attempt to invoke interface method 'org.mozilla.geckoview.WebExtension$ActionDelegate
is the actual problem. Not sure if there's something we could do on the android side to make this easier? let me know if that's the case.
Comment 1•3 years ago
|
||
The JavaStackTrace
value is pretty junky and hard to parse. We now have a JavaException
value that's structured that we can build signatures off of.
Bug #1541120 covers using JavaException
and redoing signature generation for Java crashes. I could use some help with figuring out how that should work. Knowing things like what you mention in the description is pretty helpful. I'll cc: you on bug #1693693.
Description
•