fix(firebase_crashlytics): Include obfuscated stack traces#4407
fix(firebase_crashlytics): Include obfuscated stack traces#4407Salakar merged 12 commits intofirebase:masterfrom untp:obfuscated-stack-traces
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Wow nice one for this PR! Will get it reviewed. |
|
@Ehesp Please prioritize this issue. |
|
@untp |
|
@untp On iOS the stack trace lines have the following format: |
|
@talent-apps awesome, thanks for testing. I forgot to test on iOS. I fixed it with the above commit. If you catch any bugs, I would appreciate it if you let me know. |
|
@untp When testing the new RegExp, the app force quits upon dart non-fatal crash and we don't see any reports on the dashboard. |
|
@talent-apps thanks, I fixed it. The problem was file field of stack trace lines is not nullable on iOS. |
|
@untp We can confirm that the deobfuscation works on both platforms now. 🥳 |
|
Any updates? |
|
This one would be really helpful, please take a look into it! |
|
@rrousselGit @Salakar @Ehesp Can you review this PR please? |
packages/firebase_crashlytics/firebase_crashlytics/test/firebase_crashlytics_test.dart
Outdated
Show resolved
Hide resolved
packages/firebase_crashlytics/firebase_crashlytics/test/firebase_crashlytics_test.dart
Show resolved
Hide resolved
rrousselGit
left a comment
There was a problem hiding this comment.
LGTM
But I wonder why those (.java) are added. Thought @russellwheatley?
russellwheatley
left a comment
There was a problem hiding this comment.
@rrousselGit I don't know why the Crashyltics backend appends .java to each line, my best guess would be to indicate it came from an android app.
PR LGTM once Remi's test issues have been addressed.
|
The |
|
I marked this as draft. I tested now, it outputs the warning line. This shouldn't happen. EDIT: I found the issue. Obfuscated stack traces are now including this line after So I will change |
russellwheatley
left a comment
There was a problem hiding this comment.
LGTM. What do you think, @rrousselGit?


Description
No stack traces appear for crashes that from obfuscated dart code. Because current implementation can't parse obfuscated stack traces. This PR implementation sends unparsed stack traces if the stack trace is obfuscated.
Deobfuscating can be done like this.
Problems
This implementation removes warning line, PID and instructions lines, abs addresses. Because these variables are different between sessions, so the same error will be grouped in Crashlytics Console. (These variables are not important, only
_kDartIsolateSnapshotInstructions+0xlines are needed for deobfuscating)Crashlytics Console appends
(.java)and prepends.every line. Developers need to trim these lines manually.Screenshots from Crashlytics Console
If warning, pid, instructions lines not removed: (all errors are grouped)
If warning, pid, instructions lines are removed, but abs is not removed: (These issues are same error with different sessions. Their virt addresses are same, but abs addresses are different. Abs addresses are must be removed for grouping same errors.)
Related Issues
Fixes #1150
Fixes #2644
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (
[x]).This will ensure a smooth and quick review process. Updating the
pubspec.yamland changelogs is not required.///).flutter analyze) does not report any problems on my PR.Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?