relay
relay copied to clipboard
Adding minidump to event hides exception data.
We are generating events from cpp exceptions using the std::terminate_handler hook. Attaching the exception detail as documented here https://docs.sentry.io/platforms/native/#exceptions Everything works fine and shows up correctly on sentry (the name of type and value).
But if we also attach a mini dump to the event (via Breakpad) the sentry issue changes to show that its a DUMP_REQUESTED, instead of a CPP exception, and the type/value provided in the exception node is not shown anywhere in the report.
Is this a limitation of the server side that a mini dump "trumps" all other exception information? Is there a proper way to attach the minimum so that its used to provide only the thread states and not any 'crash' info?
a mini dump "trumps" all other exception information?
I think it does. Essentially the minidump will create an event internally, and the rest of the envelope is only used for scope information. @jan-auer can say more probably.
Right, this needs changing on the server. It totally makes sense to preserve the original exception information if provided manually. There's no way to fix this in the SDK at the moment.
This issue is stale. Closing. Please reopen if necessary.
@jernejstrasner
This is still an issue, although locally we have worked around it by altering sentry to be able to provide info about all current threads by thread walking and reporting it in the threads nodes.
But ideally it would be best if the minidump was able to be included in any request to provide thread state and not be considered the "source" of an error, unless explicitly named as the source.
@eakoli thanks for letting us know, I'll reopen then!
Currently running into this issue right now while making some improvements to the Unreal Engine Plugin. Unreal has non-fatal "crash reports" for things like Ensures, and the default CrashReporter delivery mechanism will capture a non-fatal dump and forward that along. I've made changes to allow the Sentry plugin to do this as well, but I'm running into the exception data getting blown away when adding the dump file.
I don't want to attach the dump without marking it as a minidump so that our max dump limit per event still gets respected.
Having all of these reports show up as the following isn't ideal: DUMP_REQUESTED / 0x0 Fatal Error: DUMP_REQUESTED / 0x0
FYI @tustanivsky - is there something we can do to support this on the Unreal side, or is this blocked by Native/Ingest?
is there something we can do to support this on the Unreal side, or is this blocked by Native/Ingest?
It looks like we already have the required APIs in Unreal/Native allowing to attach minidumps to non-fatal events however it would be helpful to get some input from the ingestion team first to understand why exception data gets ignored when doing so.
Also, may be worth exploring how event processing differs between events captured by sentry-native and Unreal’s Crash Reporter as in case with the latter things seem to be handled as expected.
From the discussions 5 years ago (and also from my understanding of the issue), this looks like an ingest issue.
@billfreist can you share a link to the issue in Sentry so we can verify how it looks like after processing? Also, you could check yourself by exporting the event as JSON and evaluating the content. The steps to resolve this would be different, based on what's already being ingested:
- in case the information you've set manually is still there and it's "just" not used by the UI - this may be UI issue and should be transferred to getsentry/sentry
- if the information you've provided is completely ignored, this is an ingestion issue and should go to getsentry/relay
In any case, it's unlikely to be tackled in this repo as it has already been established there's probably nothing that can be done on the sentry-native SDK side of things
Yeah it definitely seems like its a Relay issue, the json is missing the info that we care about, which is just the type and value properties. You can see that presence of the dump file is completely replacing the exception object "type": "minidump".
I'm setting "type": "Ensure" and "value": "Ensure Failed: <expression> <file> <line>" on the Unreal side. So seems like the Relay just needs to join these together if the user sets one and just set precedence on the user supplied values.
Edit: I'll add that if there was just a way for us to store this data elsewhere that the UI would swap in and present as the event name/description, I'm all for that as well. I'm just trying to make this as user-friendly as possible, and consistent across platforms.
"exception": {
"values": [
{
"type": "SIGSEGV / SEGV_MAPERR / 0x3",
"value": "Fatal Error: SIGSEGV / SEGV_MAPERR / 0x3",
"mechanism": {
"type": "minidump",
"synthetic": true,
"handled": false
}
}
]
},
@kahest WDYT about transfering this issue to relay?
Hey, some time ago, I reported a similar problem: https://github.com/getsentry/sentry-native/issues/823, and then I got some pretty detailed information from @supervacuus: LINK. I think it would clarify a lot if you familiarized yourself with the details of this issue and related linked materials.
Thanks for the info @trzeciak - so this then looks like related to or maybe a duplicate of https://github.com/getsentry/relay/issues/1968