-
Notifications
You must be signed in to change notification settings - Fork 129
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Grouping still occasionally wrong #226
Comments
I've discussed this with the backend team and they've confirmed that this grouping has occurred due to the similar lines on the top frame: (file: _hidden#23282/_hidden#23281, line: 134).
One possible cause is that the top frame is referring to a dSYM other than the main app dSYM. Does your app use any frameworks or 3rd party libraries which could be producing this? |
Thanks for the investigation, @fractalwrench!
|
I believe the dSYM isnt missing - it just has hidden symbols in it due to bitcode. You can look at the troubleshooting-hidden-symbols section of the link that @fractalwrench pasted above. For some reason the symbol is not in your dsym and is marked as hidden. |
Sorry, totally glazed over that part. I'm using Xcode 9.2 (9C40b) and I'm leaving the "Include bitcode for iOS content" checkbox checked when I upload builds. I'll try running Regardless, my question #2 from above seems to be the relevant one here, yeah? Shouldn't the whole stacktrace be taken into account, instead of just the top symbol? |
We don't group on the whole stacktrace because most of the time that's not what you want. If you have a helper function that has a bug in it you don't want a group created for every call of that helper function, you want a single group instead. The only cases I've seen it break down is where you have error helper functions that overgroups things together (like a logging function or something), and we typically recommend removing those frames from the error report in a beforeNotify function - if that is appropriate in this case I can show you how to do that. |
Gotcha. I'm not sure I agree about that behavior being the default, but certainly if you can show me how to exclude this helper method with a |
You can use the depth attribute. Details at https://docs.bugsnag.com/platforms/ios/reporting-handled-exceptions/#depth You probably want to increment the depth by 1 to remove your function. |
Ok so it looks like |
Here's what I've got so far, and it seems to work at removing the helper method from the stacktrace:
Unfortunately, it also seems to break grouping in a different way. Even when calling the helper method from the same place, I now get different Busgnag errors for each one: |
Also, I switched to a release build to test some of this stuff out, and now it seems that |
Here's what I ended up with:
I also had to add a In my case, |
@edenman the We're currently planning on adding a new property to |
@fractalwrench any progress on the user-specified frames thing? I just got bit by the backtrace symbol format being as fragile as I anticipated: it changed recently (in the latest Xcode/Swift?) and all my crashes from this helper method started getting lumped together again. Which meant I didn't notice them for a week. |
We have some ideas on how we might solve it, but haven't had the time to focus on that for a while. Hopefully we will soon! |
@snmaynard any updates on this? Swift4.2/Xcode10 broke my symbol detection code again. |
Actually it looks like it was broken this time not because the symbol names changed in some subtle way, but instead that there don't seem to be any of my app's symbol names in the [crash][threads][backtrace][contents] array. This is really bad. |
object_name.symbol_name from the TestFlight build:
object_name.symbol_name from a dev build:
Every actual method in my app has just been replaced with |
Correct, optimizations are removing the symbol names at runtime in release builds, though uploaded reports are symbolicated using dsym/dylib files. There is not much we can do to restore the old behavior of the compilation process, though you can potentially be clever about addresses instead of names to strip contents from reports. Here is an example, extending your previous code, which strips everything above a predefined closure which is used to report exceptions to Bugsnag. With a bit of elbow grease it could work for something like your use case, though yours is complicated by generics. |
Ok, I'm finally getting around to looking into this. A couple questions that maybe you know the answer to:
but it crashes with |
@kattrali any idea about the above? |
Expected behavior
different stacktraces are grouped into different errors
Observed behavior
Two totally different stacktraces are grouped into the same error:
https://app.bugsnag.com/recharge-labs/ios/errors/5a0226b08110ee00185760ea?&event_id=5a5681dde2a9ff00189926dc
https://app.bugsnag.com/recharge-labs/ios/errors/5a0226b08110ee00185760ea?&event_id=5a541f0ed0f0c0001cf4853b
Version
5.14.0
The text was updated successfully, but these errors were encountered: