Allow startup without $HOME writable

Fixes #3202

Two changes to get here:

1. Do not fail startup if crash reporting initialization fails. This is a
   non-critical feature and should not prevent the terminal from starting.

2. Avoid freeing Sentry transport on error path. This segfaults.
   Upstream issue will be reported separately.
This commit is contained in:
Mitchell Hashimoto
2024-12-29 13:53:29 -08:00
parent b3925b83ae
commit 84a03aa202
2 changed files with 11 additions and 2 deletions

View File

@ -81,7 +81,11 @@ fn initThread(gpa: Allocator) !void {
const alloc = arena.allocator();
const transport = sentry.Transport.init(&Transport.send);
errdefer transport.deinit();
// This will crash if the transport was never used so we avoid
// that for now. This probably leaks some memory but it'd be very
// small and a one time cost. Once this is fixed upstream we can
// remove this.
//errdefer transport.deinit();
const opts = sentry.c.sentry_options_new();
errdefer sentry.c.sentry_options_free(opts);

View File

@ -127,7 +127,12 @@ pub const GlobalState = struct {
internal_os.fixMaxFiles();
// Initialize our crash reporting.
try crash.init(self.alloc);
crash.init(self.alloc) catch |err| {
std.log.warn(
"sentry init failed, no crash capture available err={}",
.{err},
);
};
// const sentrylib = @import("sentry");
// if (sentrylib.captureEvent(sentrylib.Value.initMessageEvent(