Files
DeepSeek-Reasonix/cmd/reasonix
esengine 77af6236eb fix(cli): keep fatal crash output and the diagnostics tail of long sessions
A long-running CLI session that died silently left nothing to diagnose.
The CLI only recovered panics on the main goroutine and never called
debug.SetCrashOutput, so a panic on any other goroutine or a fatal runtime
error (out of memory, concurrent map writes) went only to the console's
stderr, which is gone once the terminal closes. The TUI diagnostic log
also kept its first 4 MiB and dropped everything after, so a session that
ran for days lost exactly the entries leading up to the crash.

The CLI now mirrors runtime crash output into a per-PID file under the
Reasonix home, and the next start queues any dump left by a dead process
as a pending crash report (runtime classification and goroutine stacks,
panic value redacted). A panic already reported through recover detaches
that file first so it is not queued twice. The TUI log now rotates within
the same total bound: the live file holds half the budget and replaces a
single .prev.log sibling, so the newest diagnostics survive.

Tests: TestGoroutinePanicIsReportedOnNextStart re-runs the test binary
as a child that panics on a background goroutine, then asserts the next
start lists the report; it lists none on the base. TestTUIDiagnostics-
KeepLatestEntriesWithinTotalBound writes three times the limit and a
marker, and asserts the marker is on disk within the bound; on the base
only the head is kept.
2026-09-25 07:26:33 -07:00
..