Open Bug 1698623 Opened 3 years ago Updated 4 months ago

"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.

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.

Type: task → defect
Depends on: 1541120
Priority: -- → P2
You need to log in before you can comment on or make changes to this bug.