Skip to content

Add crash diagnostics dialog with process output capture#2001

Open
gigachadmma69 wants to merge 1 commit into
brunodev85:mainfrom
gigachadmma69:feature/crash-diagnostics
Open

Add crash diagnostics dialog with process output capture#2001
gigachadmma69 wants to merge 1 commit into
brunodev85:mainfrom
gigachadmma69:feature/crash-diagnostics

Conversation

@gigachadmma69

Copy link
Copy Markdown

Summary

When Wine/Box64 crashes, users currently see nothing -- the app silently restarts to the main screen. This makes debugging impossible without manually enabling Wine debug logs and trying to reproduce.

This PR adds:

  • Always-on output capture: ProcessHelper now captures the last 200 lines of stdout/stderr in a ring buffer, regardless of whether debug logging is enabled. Minimal overhead (just appending strings to an ArrayList).

  • Crash dialog: When the process exits with a non-zero status (crash), a dialog shows:

    • The exit code and human-readable signal name (e.g., "Exit code: 139 (Segmentation fault)")
    • The last 200 lines of process output
    • An OK button to proceed with the normal restart
  • Graceful exits (status == 0) continue to work exactly as before -- silent restart.

Signal name mapping:

Code Signal Name
132 SIGILL Illegal instruction
134 SIGABRT Aborted
135 SIGBUS Bus error
137 SIGKILL Killed
139 SIGSEGV Segmentation fault
143 SIGTERM Terminated

Test plan

  • Run a game that is known to crash → verify crash dialog appears with exit code and output
  • Run a game that exits gracefully → verify normal silent restart (no dialog)
  • Verify the crash dialog shows useful output lines (Wine errors, Box64 messages)
  • Enable Wine debug logs, trigger crash → verify full debug output appears in the dialog

When Wine/Box64 crashes, users currently see nothing - the app silently
restarts. This change shows a dialog with the exit code, signal name
(e.g., "Segmentation fault"), and the last 200 lines of process output
so users can diagnose issues or share crash info in bug reports.

Changes:
- ProcessHelper: Always capture stdout/stderr to a 200-line ring buffer,
  not just when debug callbacks are registered. Added getCrashLogSnapshot()
  and clearCrashLog() methods.
- XServerDisplayActivity: Check exit code in termination callback. If
  non-zero, show crash dialog instead of silently restarting. Graceful
  exits (status == 0) still restart normally.
- Added signal name mapping for common crash signals (SIGSEGV, SIGABRT,
  SIGILL, SIGKILL, etc.)
@Jeney6

Jeney6 commented Feb 28, 2026

Copy link
Copy Markdown

Why not games work and app not opening

@asorc

asorc commented Jul 8, 2026

Copy link
Copy Markdown

Hello,

I am not an expert on GitHub, so I don't know if this is the right place for this post, but on issues I can't post anything.

Winlator containers only are able to start for a while after installing the app. Even if I install It without creating a container. This time I waited some hours after installing Winlator to create a container, and It crashed before opening. I saved the log files, and the last message is

Warning: Unsupported libc Syscall 0x143 (323).

Maybe some of the experts here can find a solution.

Sorry, if this is not the place, but I just wanted to reach out somebody.

Thanks to everybody that is working on this project.

@fern2813

fern2813 commented Jul 8, 2026

Copy link
Copy Markdown

Within the Winlator code, there are three modules: app, Vortek, and Gladio. Simply click on them, and you will be redirected to another specific application repository. There, the "Issues" tab is open for submitting issues.

@asorc

asorc commented Jul 8, 2026

Copy link
Copy Markdown

Ok. Thanks a lot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants