mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-27 05:23:51 +00:00
fix(diagnostics): add render-phase crash markers and improve signal handling
Add signal-safe render-phase markers throughout GameScreen::render() and Application::render() so the crash handler can report which render call was active when a SIGSEGV occurs. The AMD RADV crash backtrace only shows 2 frames due to missing frame pointers, making it impossible to identify the actual crash site. Changes: - Add volatile g_crashRenderPhase marker updated before each major render call - Upgrade Linux signal handler to sigaction with SA_SIGINFO for faulting address - Set ImGui CheckVkResultFn to log silent Vulkan errors in ImGui backend - Enable -fno-omit-frame-pointer in all build configs (not just Debug/RelWithDebInfo)
This commit is contained in:
parent
b092bc2e90
commit
82267320b0
6 changed files with 104 additions and 29 deletions
|
|
@ -2133,15 +2133,22 @@ void Application::update(float deltaTime) {
|
|||
}
|
||||
}
|
||||
|
||||
// Render-phase marker from game_screen.cpp — updated here for 3D/submit phases
|
||||
} } // close wowee::core temporarily
|
||||
extern volatile const char* g_crashRenderPhase;
|
||||
namespace wowee { namespace core {
|
||||
|
||||
void Application::render() {
|
||||
if (!renderer) {
|
||||
return;
|
||||
}
|
||||
|
||||
g_crashRenderPhase = "beginFrame";
|
||||
renderer->beginFrame();
|
||||
|
||||
// Only render 3D world when in-game
|
||||
if (state == AppState::IN_GAME) {
|
||||
g_crashRenderPhase = "renderWorld";
|
||||
if (world) {
|
||||
renderer->renderWorld(world.get(), gameHandler.get());
|
||||
} else {
|
||||
|
|
@ -2151,15 +2158,19 @@ void Application::render() {
|
|||
|
||||
// Render performance HUD (within ImGui frame, before UI ends the frame)
|
||||
if (renderer) {
|
||||
g_crashRenderPhase = "renderHUD";
|
||||
renderer->renderHUD();
|
||||
}
|
||||
|
||||
// Render UI on top (ends ImGui frame with ImGui::Render())
|
||||
if (uiManager) {
|
||||
g_crashRenderPhase = "uiRender";
|
||||
uiManager->render(state, authHandler.get(), gameHandler.get());
|
||||
}
|
||||
|
||||
g_crashRenderPhase = "endFrame";
|
||||
renderer->endFrame();
|
||||
g_crashRenderPhase = "idle";
|
||||
}
|
||||
|
||||
void Application::setupUICallbacks() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue