In-viewer bug & crash reporter (Forgejo relay) #102

Open
opened 2026-09-27 12:02:37 +00:00 by backspace119 · 0 comments
Owner

In-viewer bug and crash reporting that files straight into this repo, with hardware info and logs attached. Testers shouldn't have to dig for logs.

Decisions: issues go into this repo with the label from-viewer. Reporters are anonymous: no contact field, only hardware and system info. The relay runs on starswirl.

  • ReportBugURL already points to /issues/new (done with GL-B9).
  • handle_report_bug (llviewermenu.cpp) appends ?title=&body= with viewer version and commit, GPU, driver, Vulkan API version, OS/kernel, glibc, CPU, RAM, and the current graphics preset plus key settings (shadow quality/updates, RT mode).

Stage 2: relay + Report a Problem floater

Relay (starswirl, next to Forgejo):

  • POST /report (JSON plus multipart attachments). Creates the issue as a bug-reporter bot account (token only on the server), labels it from-viewer, uploads attachments.
  • Abuse limits: rate limit per IP and per install ID, size caps (log about 5 MB compressed, screenshot about 5 MB), a non-secret client key, reject empty reports.
  • Runs as a systemd service behind the existing reverse proxy (LAN upload path like CI if Cloudflare limits bite).

Viewer floater (Help → Report Bug):

  • Title, what happened, steps to reproduce.
  • Tick boxes, each with a preview of exactly what is sent:
    • last N MB of Alchemy.log (zstd/gzip);
    • hardware and system info;
    • non-default graphics settings;
    • optional screenshot (VK capture path).
  • Scrub before sending: session IDs, capability URLs, auth tokens, login credentials.
  • Shows the resulting issue link.

Stage 3: crash-on-next-start

  • On launch after a bad shutdown (the viewer already detects it), offer to send the previous session's log plus the crash backtrace (SIGSEGV/SIGABRT handler output in the log).
  • The relay groups by a signature of the top N frames (module+offset) and adds a comment to an existing open crash issue instead of opening a duplicate.
  • Include the build commit so backtraces can be symbolized against the CI unstripped binary.

Order: 1, then 2, then 3. Scheduled after GL removal (Phases B–E).

In-viewer bug and crash reporting that files straight into this repo, with hardware info and logs attached. Testers shouldn't have to dig for logs. **Decisions:** issues go into this repo with the label `from-viewer`. Reporters are anonymous: no contact field, only hardware and system info. The relay runs on starswirl. ### Stage 1: pre-filled Report Bug link (no server work) - `ReportBugURL` already points to `/issues/new` (done with GL-B9). - `handle_report_bug` (llviewermenu.cpp) appends `?title=&body=` with viewer version and commit, GPU, driver, Vulkan API version, OS/kernel, glibc, CPU, RAM, and the current graphics preset plus key settings (shadow quality/updates, RT mode). ### Stage 2: relay + Report a Problem floater **Relay (starswirl, next to Forgejo):** - `POST /report` (JSON plus multipart attachments). Creates the issue as a `bug-reporter` bot account (token only on the server), labels it `from-viewer`, uploads attachments. - Abuse limits: rate limit per IP and per install ID, size caps (log about 5 MB compressed, screenshot about 5 MB), a non-secret client key, reject empty reports. - Runs as a systemd service behind the existing reverse proxy (LAN upload path like CI if Cloudflare limits bite). **Viewer floater (Help → Report Bug):** - Title, what happened, steps to reproduce. - Tick boxes, each with a preview of exactly what is sent: - last N MB of Alchemy.log (zstd/gzip); - hardware and system info; - non-default graphics settings; - optional screenshot (VK capture path). - Scrub before sending: session IDs, capability URLs, auth tokens, login credentials. - Shows the resulting issue link. ### Stage 3: crash-on-next-start - On launch after a bad shutdown (the viewer already detects it), offer to send the previous session's log plus the crash backtrace (SIGSEGV/SIGABRT handler output in the log). - The relay groups by a signature of the top N frames (module+offset) and adds a comment to an existing open crash issue instead of opening a duplicate. - Include the build commit so backtraces can be symbolized against the CI unstripped binary. Order: 1, then 2, then 3. Scheduled after GL removal (Phases B–E).
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
backspace119/Slipstream#102
No description provided.