Skip to content

Crash reporting and RelWithDebInfo - #2366

Draft
JulianGro wants to merge 41 commits into
overte-org:masterfrom
JulianGro:RelWithDebInfo
Draft

JulianGro wants to merge 41 commits into
overte-org:masterfrom
JulianGro:RelWithDebInfo

Conversation

@JulianGro

@JulianGro JulianGro commented Jul 15, 2026 •

Copy link
Copy Markdown
Member

Idea behind this PR is to bring back crash reporting, but in a way that yields actually useful crash reports.
In the past, we would collect crash reports, but without debug information and with the builds fully optimized. This would essentially only tell us that someone was crashing.
Now I want to create RelWithDebInfo builds, automatically upload the debug information to Sentry, and strip the debug symbols in the later packaging step.

With Dale's changes, this also switches us from using Crashpad directly to using Sentry-native which takes the maintenance burden of trying to build Google software away.

Conan recipe change: overte-org/overte-conan-recipes#59

I tested the Sentry uploading locally using act, since Pull Requests cannot usually access secrets.

The size difference between Release and RelWithDebInfo/Debug builds stems from Qt. Apparently, when building from source, the libraries Qt depends on are statically linked.

@JulianGro
JulianGro force-pushed the RelWithDebInfo branch 2 times, most recently from 4fecacf to 542027d Compare July 17, 2026 19:29
@JulianGro JulianGro added needs CR This pull request needs to be code reviewed needs QA This pull request needs to be tested labels Jul 17, 2026
@JulianGro
JulianGro marked this pull request as ready for review July 17, 2026 20:08
@JulianGro
JulianGro marked this pull request as draft July 22, 2026 13:57
@JulianGro
JulianGro force-pushed the RelWithDebInfo branch 2 times, most recently from c73dcf6 to 5244e15 Compare August 3, 2026 10:26
@JulianGro JulianGro mentioned this pull request Aug 27, 2026
@JulianGro

Copy link
Copy Markdown
Member Author

@vatral can we change some of Sentry-Native's behaviour?
For one, it appears to periodically check in with Sentry when Crash reporting is enabled, even when we haven't crashed. The user agrees to send crash reports automatically, not necessarily to telemetry.

[sentry] DEBUG sending envelope
[sentry] DEBUG submitting task to background worker thread
[sentry] DEBUG executing task on worker thread
* Reusing existing https: connection with host o4504831972343808.ingest.us.sentry.io
> POST /api/4504832427950080/envelope/ HTTP/1.1
Host: o4504831972343808.ingest.us.sentry.io
User-Agent: sentry.native/0.14.2
Accept: */*
x-sentry-auth:Sentry sentry_key=f511de295975461b8f92a36f4a4a4f32, sentry_version=7, sentry_client=sentry.native/0.14.2
content-type:application/x-sentry-envelope
content-length:1824

* upload completely sent off: 1824 bytes
< HTTP/1.1 200 OK
< server: nginx
< date: Mon, 31 Aug 2026 16:59:41 GMT
< content-type: application/json
< Content-Length: 2
< vary: origin, access-control-request-method, access-control-request-headers
< access-control-allow-origin: *
< access-control-expose-headers: x-sentry-error,x-sentry-rate-limits,retry-after
< cross-origin-resource-policy: cross-origin
< strict-transport-security: max-age=31536000; includeSubDomains; preload
< via: 1.1 google
< Alt-Svc: h3=":443"; ma=2592000
< 
{}* Connection #0 to host o4504831972343808.ingest.us.sentry.io:443 left intact

Then there are quite a lot of log messages coming from Sentry. I feel like it is too chatty.
It probably shouldn't print the backtrace URL either:

[sentry] DEBUG using minidump URL "https://o4504831972343808.ingest.us.sentry.io:443/api/4504832427950080/minidump/?sentry_client=sentry.native/0.14.2&sentry_key=f511de295975461b8f92a36f4a4a4f32"

Vadim Troshchinskiy and others added 23 commits August 31, 2026 19:12
This is the start of a plan to refactor the API to better fit the features Sentry Native
exposes. If we want to bring back Crashpad and Breakpad later, they should be adapted
to the new API.

It appears that we can also do cleaner exception handling based on the API docs, so
that's removed here as well.
Add log streaming and stats submission
Generates a random but easily pronounceable tag that can be used
to pass to a developer, to let them easily locate a matching report
in the Sentry (or similar) database.
Avoid discarding reports
Since the current version of Sentry Native is too old, contexts have to
be manually merged. This could be removed after an upgrade
Make it correctly persist. There was a bit of a snag between the menu system
and the crash specific setting. Make it all use the same setting keys.
We've discussed redoing the menu system, so this is probably
better addressed at that point in time or at least as a
separate PR.
Add support tag to about screen
… which is of non-class type 'const char [26]'"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs CR This pull request needs to be code reviewed needs QA This pull request needs to be tested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant