-
Notifications
You must be signed in to change notification settings - Fork 14
Adds Crashpad support to Dive UI #691
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
base: main
Are you sure you want to change the base?
Conversation
50a5f6b to
8186325
Compare
13f9f2e to
58afbcc
Compare
58afbcc to
6f47f8f
Compare
- This change implements Crashpad as the primary crash reporting system across all platforms (Linux, Windows, and macOS), replacing the existing absl::crashhandler. - Symbol Generation: Developers are now required to install dump_syms via the Rust toolchain or the Linux package manager to generate debug symbols. - Symbol Uploads: Added support for uploading symbols to the Crashpad server using curl via PowerShell (Windows) or Bash (macOS/Linux). - Distribution: Included the crashpad_handler executable in the Dive UI output directory for both development and release builds. - Debug symbols are only generated and uploaded to the Crashpad server for a release build (DIVE_RELEASE_TYPE=RelWithDebInfo).
6f47f8f to
4089ee9
Compare
|
Tested on Windows and Linux. @angela28chen @GrantComm, could you please help me test this PR on macOS? Since I’m guessing the Crashpad path dependencies for macOS, please follow this workflow:
What to verify:
If you don't see these messages, please post the error log here. On another note, could you also investigate why the Regression_StackOverflow test is failing on macOS with a timeout? My guess is that because crashpad_handler now runs out-of-process, we might need to increase the timeout. |
| - Android Studio. Make sure to install an SDK and accept the licenses. | ||
| - On Linux, set up environment variables for building GFXReconstruct as explained [here](https://github.com/LunarG/gfxreconstruct/blob/dev/BUILD.md#additional-linux-command-linux-prerequisites) | ||
| - Note: Use Java 17, because this uses an older version of Gradle. | ||
| - dump_syms, which generates debug symbols for release builds, can be installed via the [Rust installer](https://rustup.rs/). Alternatively, on Linux, you can use `sudo apt install cargo`. Once Cargo is set up, run the command `cargo install dump_syms`. |
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.
Is there a reason to not use breakpad's dump_syms? You can list both of them if both version works.
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 have not listed that for the following reasons:
- Linux and macOS: While I successfully built
dump_symsfrom Breakpad, it does not fully support DWARF 4. As a result, function names and line numbers are not translated correctly in the stack trace. However, the Rust version is modern and provides full DWARF 4 support, allowing us to see the missing information. - Windows: Building dump_syms from breakpad source is not trivial, as it requires managing several Visual Studio prerequisites.
In any case, I believe the most reliable approach is to use the Rust version or apt for Linux.
| - Android Studio. Make sure to install an SDK and accept the licenses. | ||
| - On Linux, set up environment variables for building GFXReconstruct as explained [here](https://github.com/LunarG/gfxreconstruct/blob/dev/BUILD.md#additional-linux-command-linux-prerequisites) | ||
| - Note: Use Java 17, because this uses an older version of Gradle. | ||
| - dump_syms, which generates debug symbols for release builds, can be installed via the [Rust installer](https://rustup.rs/). Alternatively, on Linux, you can use `sudo apt install cargo`. Once Cargo is set up, run the command `cargo install dump_syms`. |
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.
On mac I did:
brew install rust
cargo install dump_syms
I got: Also, do I need to set something up with api key? |
Thank you so much @angela28chen , it seems the dSYM file was not generated on macOS. Could you test again please? |
Uh oh!
There was an error while loading. Please reload this page.