-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Add Unreal Engine stack trace rules #83813
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
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
|
Hey @armenzg, here are some example events that I've captured in Unreal with the suggested rules applied:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the examples!
Could you please add the tests? Let me know if you need a hand adding them and running them.
| ## Unreal Engine | ||
|
|
||
| ### Unreal Engine internal assertion handling | ||
| family:native stack.function:FDebug::CheckVerifyFailedImpl* ^-app -app v+app ^-group -group v+group |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tustanivsky is this change also intentional?

There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, apparently __start-thread and __pthread_start were un-ignored because of the v+app in this rule. Is there a way we can still keep them ignored?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We would have to add specific rules to keep them as non-in-app.
| family:native stack.function:FDebug::CheckVerifyFailedImpl* ^-app -app v+app ^-group -group v+group | ||
|
|
||
| ### Unreal Engine internal ensure handling | ||
| family:native stack.function:UE::Assert::Private::ExecCheckImplInternal* ^-app -app v+app ^-group -group v+group |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is an example of this rule:

@tustanivsky there are 5 frames excluded from grouping that have source code (see the ones which can be expanded).
Should any of those be in-app? or part of grouping?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe these frames represent internal Unreal SDK logic for processing ensure events and can be safely ignored.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we ignore all frames with sentry_ in all native crashes? platform=native ?
| family:native stack.function:USentrySubsystem::CaptureMessageWithScope* ^-app -app v+app ^-group -group v+group | ||
| family:native stack.function:USentrySubsystem::CaptureEvent* ^-app -app v+app ^-group -group v+group | ||
| family:native stack.function:USentrySubsystem::CaptureEventWithScope* ^-app -app v+app ^-group -group v+group | ||
| family:native stack.function:USentrySubsystem::*execCapture* ^-app -app v+app ^-group -group v+group |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is an example of this rule:

|
Thanks, I'll look into adding some tests and let you know if any questions arise. |
|
The test inputs actually be should be in LMK if any of that is unclear. |
|
I will take care of pushing this to production next week. |
This will not change system hashes, thus, we can deploy it without a project transition. This PR introduces stack trace rules specific to Unreal Engine. Having these set by default will allow us to merge getsentry/sentry-unreal#744 and resolve getsentry/sentry-unreal#669. Essentially, the suggested set of rules addresses grouping issues we encountered with assertion/ensure events. It also takes care of cutting off redundant call stack frames for regular events sent via the UE SDK interface. Original rules by @tustanivsky . Supersedes: * #83813
This will not change system hashes, thus, we can deploy it without a project transition. This PR introduces stack trace rules specific to Unreal Engine. Having these set by default will allow us to merge getsentry/sentry-unreal#744 and resolve getsentry/sentry-unreal#669. Essentially, the suggested set of rules addresses grouping issues we encountered with assertion/ensure events. It also takes care of cutting off redundant call stack frames for regular events sent via the UE SDK interface. Original rules by @tustanivsky . Supersedes: * #83813
This will not change system hashes, thus, we can deploy it without a project transition. This PR introduces stack trace rules specific to Unreal Engine. Having these set by default will allow us to merge getsentry/sentry-unreal#744 and resolve getsentry/sentry-unreal#669. Essentially, the suggested set of rules addresses grouping issues we encountered with assertion/ensure events. It also takes care of cutting off redundant call stack frames for regular events sent via the UE SDK interface. Original rules by @tustanivsky . Supersedes: * #83813
This will not change system hashes, thus, we can deploy it without a project transition. It's based on #85452. This PR introduces stack trace rules specific to Unreal Engine. Having these set by default will allow us to merge getsentry/sentry-unreal#744 and resolve getsentry/sentry-unreal#669. Essentially, the suggested set of rules addresses grouping issues we encountered with assertion/ensure events. It also cuts off redundant call stack frames for regular events sent via the UE SDK interface. Original rules by @tustanivsky . Supersedes: * #83813
This will not change system hashes, thus, we can deploy it without a project transition. It's based on #85452. This PR introduces stack trace rules specific to Unreal Engine. Having these set by default will allow us to merge getsentry/sentry-unreal#744 and resolve getsentry/sentry-unreal#669. Essentially, the suggested set of rules addresses grouping issues we encountered with assertion/ensure events. It also cuts off redundant call stack frames for regular events sent via the UE SDK interface. Original rules by @tustanivsky . Supersedes: * #83813


This PR introduces stack trace rules specific to Unreal Engine. Having these set by default will allow us to merge getsentry/sentry-unreal#744 and resolve getsentry/sentry-unreal#669.
Essentially, the suggested set of rules addresses grouping issues we encountered with assertion/ensure events. It also takes care of cutting off redundant callstack frames for regular events sent via the UE SDK interface.