Vulkan: handle VK_ERROR_DEVICE_LOST gracefully (log, notify, recover) #135

Closed
opened 2026-09-28 02:29:23 +00:00 by sky_line · 1 comment
Owner

Related: #107.

A tester's crash (0.11.0-beta.1, GTX 1070 Ti, second viewer + Overwolf Vulkan overlay running) was a GPU device loss: renderFrame -> VkSwapchain::acquire -> vkWaitForFences returned VK_ERROR_DEVICE_LOST and VK_CHECK called abort() (0xC0000409, fast-fail 7). The log simply stops (after a ~12 s gap consistent with a TDR), so users see an unexplained exit.

  • Detect DEVICE_LOST at every wait/submit/present/acquire site (not via VK_CHECK abort).
  • Log it explicitly (plus the last GPU breadcrumb once that ticket lands), and show a user-facing message: graphics driver reset, possible causes (overlays such as Overwolf, running other GPU-heavy apps, driver issues).
  • Stretch: recover by recreating the VkDevice and all renderer resources (swapchain, renderer, textures re-upload) instead of exiting; at minimum exit cleanly with a proper crash/marker entry.
Related: #107. A tester's crash (0.11.0-beta.1, GTX 1070 Ti, second viewer + Overwolf Vulkan overlay running) was a GPU device loss: `renderFrame -> VkSwapchain::acquire -> vkWaitForFences` returned `VK_ERROR_DEVICE_LOST` and `VK_CHECK` called `abort()` (0xC0000409, fast-fail 7). The log simply stops (after a ~12 s gap consistent with a TDR), so users see an unexplained exit. - Detect DEVICE_LOST at every wait/submit/present/acquire site (not via VK_CHECK abort). - Log it explicitly (plus the last GPU breadcrumb once that ticket lands), and show a user-facing message: graphics driver reset, possible causes (overlays such as Overwolf, running other GPU-heavy apps, driver issues). - Stretch: recover by recreating the VkDevice and all renderer resources (swapchain, renderer, textures re-upload) instead of exiting; at minimum exit cleanly with a proper crash/marker entry.
sky_line added this to the Slipstream project 2026-10-06 15:04:15 +00:00
Author
Owner

Ticket audit 2026-10-07: done and shipped in 1.0.0 Beta 6. Single device-lost state with a report, message box, clean exit and restart (490b21a805, b64c0028e4, 3886456ef7). In-process recovery remains a design note. If you still see the problem on the current beta, please reopen or file a new report.

Ticket audit 2026-10-07: done and shipped in **1.0.0 Beta 6**. Single device-lost state with a report, message box, clean exit and restart (490b21a805, b64c0028e4, 3886456ef7). In-process recovery remains a design note. If you still see the problem on the current beta, please reopen or file a new report.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#135
No description provided.