feat(diag): UI-thread hang watchdog with minidump capture (#120)

The Windows freeze in #120 never reproduces locally and a hung app
prints nothing, so terminal runs and logs came back empty. A watchdog
thread now watches a heartbeat the UI thread bumps on every processed
message (plus a 5 s liveness timer); 25 s of silence writes a minidump
with every thread's stack to %LOCALAPPDATA%\OpenCADStudio plus a note
telling the reporter to attach it to the issue. One dump per run,
armed only after the first beat, suspend-aware, OCS_NO_WATCHDOG=1
disables. Windows-only; windows-sys gains the Debug/Threading binding
features (no new crates).

Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Fable 5 committed 2026-07-22 22:13:00 +03:00
1 parent 805da6428a
commit b3decf45ec
7 files changed
+172 -1

No files matched your search

+1 -1
View File
@@ -86,7 +86,7 @@ lyon_tessellation = "1.0.20"
# (IApplicationAssociationRegistrationUI dialog).
# Win32_System_Registry — HKCU registration that lists the app under
# "Open with" for the portable .exe.
windows-sys = { version = "0.61", features = ["Win32_UI_Shell", "Win32_UI_WindowsAndMessaging", "Win32_System_Com", "Win32_System_Registry", "Win32_Foundation"] }
windows-sys = { version = "0.61", features = ["Win32_UI_Shell", "Win32_UI_WindowsAndMessaging", "Win32_System_Com", "Win32_System_Registry", "Win32_Foundation", "Win32_System_Diagnostics_Debug", "Win32_System_Threading", "Win32_Storage_FileSystem", "Win32_System_Kernel", "Win32_System_Memory"] }
[patch.crates-io]
# The `acadrust` crate now tracks the OpenAEC-Foundation/acadifc fork's main