Native crash capture on Windows, and startup steps in crash reports (#1215)
A crash inside a graphics driver left only "an unclean exit between commands": no backtrace, no module, no hint that it was at startup. - The crash journal now keeps the startup step the app is in (window, graphics instance, surface, adapter request, adapter chosen, device creation, renderer and viewport shader compiles, surface configure, first frame and its present, running) and the renderer as soon as the adapter is picked. egui-wgpu tells the app about its steps through a small hook. An unclean exit before the first frame names the step. - Windows: an unhandled-exception filter (src/native_crash.rs, the one Windows-only module allowed unsafe) writes the exception code, the faulting module and offset, and a minidump next to the journal; the next start puts them into the report. - The Windows CI job runs a child that faults on purpose and checks the report. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0ddd660089
commit
d20b0fab65
15 files changed
+703
-30
No files matched your search
Vendored
+4
@@ -125,6 +125,10 @@ SolidCraft changes:
|
||||
guarantees 1x and 4x).
|
||||
- `src/setup.rs`: the default device asks for the adapter's largest 2D texture (at least 8192)
|
||||
instead of exactly 8192.
|
||||
- `src/lib.rs`, `src/winit.rs`: `set_startup_hook` is told before each step of getting the
|
||||
device and the window's surface up (instance, surface, adapter request, the chosen adapter,
|
||||
device, renderer, surface configure, first present), so the app's crash journal can say which
|
||||
step a crash inside the graphics driver happened in.
|
||||
- `src/lib.rs`, `src/winit.rs`: a window larger than the device's largest texture gets a surface
|
||||
clamped to it (`clamp_surface_extent`, aspect ratio kept) and egui is drawn at the matching
|
||||
smaller scale, instead of a `Surface::configure` validation panic (#869). The resize path and
|
||||
|
||||
Reference in new issue
Block a user