Skip to content

Fix review findings: reliable failed-report retries, Windows 11, sign… - #3

Merged
d3sync merged 1 commit into
masterfrom
review-fixes
Sep 25, 2026
Merged

d3sync merged 1 commit into
masterfrom
review-fixes

Conversation

@d3sync

@d3sync d3sync commented Sep 25, 2026

Copy link
Copy Markdown
Owner

…ing (2.1.0)

Failed reports

  • Save exception text with control characters exactly (XML character references), keep \r\n, replace lone surrogates; write atomically (temp file + rename).
  • Queue per application (%TEMP%\CrashReporterNET<app>) with unique timestamp+GUID file names.
  • Persist the full snapshot (title, versions, developer/user message, screenshot choice, crash time) and resend it unchanged on retry, without recapturing a screenshot; DrDump retries report the saved application title/version.
  • Add RetryFailedReportsAsync(CancellationToken): runs entirely on the thread pool; one retry per application at a time (exclusive queue lock, also across processes); DeliveryTimeout per report; cancellation interrupts SMTP delivery on .NET Framework (SendAsyncCancel).
  • Delete a delivered report before optionally opening the browser.

Doctor Dump

  • Share HttpClient instances (per proxy; pooled connection lifetime on .NET 10).
  • Reject non-success HTTP statuses, report SOAP faults with their reason, reject missing/nil results.
  • Replace characters that are invalid in XML before sending.
  • Do not send an anonymous report from the dialog when AnalyzeWithDoctorDump is false.
  • Tolerate missing network when computing the anonymous machine ID and always restore the thread culture.

Other

…ing (2.1.0)

Failed reports
- Save exception text with control characters exactly (XML character
  references), keep \r\n, replace lone surrogates; write atomically
  (temp file + rename).
- Queue per application (%TEMP%\CrashReporterNET\<app>) with unique
  timestamp+GUID file names.
- Persist the full snapshot (title, versions, developer/user message,
  screenshot choice, crash time) and resend it unchanged on retry,
  without recapturing a screenshot; DrDump retries report the saved
  application title/version.
- Add RetryFailedReportsAsync(CancellationToken): runs entirely on the
  thread pool; one retry per application at a time (exclusive queue
  lock, also across processes); DeliveryTimeout per report; cancellation
  interrupts SMTP delivery on .NET Framework (SendAsyncCancel).
- Delete a delivered report before optionally opening the browser.

Doctor Dump
- Share HttpClient instances (per proxy; pooled connection lifetime on
  .NET 10).
- Reject non-success HTTP statuses, report SOAP faults with their
  reason, reject missing/nil results.
- Replace characters that are invalid in XML before sending.
- Do not send an anonymous report from the dialog when
  AnalyzeWithDoctorDump is false.
- Tolerate missing network when computing the anonymous machine ID and
  always restore the thread culture.

Other
- Show Windows 11 (build >= 22000 workstation) in local reports.
- Embed the screenshot in reports saved from the dialog (ravibpatel#40).
- Always strong-name sign with a committed key (sn.exe generated).
- Add xUnit test project (net10.0-windows + net48) and run it in CI.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@d3sync
d3sync merged commit ecd19a9 into master Sep 25, 2026
4 checks passed
@d3sync
d3sync deleted the review-fixes branch September 25, 2026 06:41

This branch was successfully deployed

1 active deployment
release — e9643c59 Deployed Sep 25, 2026 by d3sync via publish #6
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.

1 participant