mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-02-04 06:23:45 +00:00
Improve crash handling
This adds a crash handler which reports a crash (if telemetry is enabled). On a crash, this looks for `curl` (using the PATH env), and forks the process to then call execve. This relies on a new endpoint to be setup to accept the "report". Also, we include very little data..I figured just knowing about crashes would be a good place to start. A panic handler is provided, which override's Zig default handler and hooks into the crash handler. An `assert` function is added and hooks into the crash handler. This is currently only used in one place (Session.zig) to demonstrate its use. In addition to reporting a failed assert, the assert aborts execution in ReleaseFast (as opposed to an undefined behavior with std.debug.assert). I want to hook this into the v8 global error handler, but only after direct_v8 is merged. Much of this is inspired by bun's code. They have their own assert (1) and a [more sophisticated] crashHandler (2). : (1)beccd01647/src/bun.zig (L2987)(2)beccd01647/src/crash_handler.zig (L198)
This commit is contained in:
@@ -10,6 +10,10 @@ const Notification = @import("../Notification.zig");
|
||||
const uuidv4 = @import("../id.zig").uuidv4;
|
||||
const IID_FILE = "iid";
|
||||
|
||||
pub fn isDisabled() bool {
|
||||
return std.process.hasEnvVarConstant("LIGHTPANDA_DISABLE_TELEMETRY");
|
||||
}
|
||||
|
||||
pub const Telemetry = TelemetryT(blk: {
|
||||
if (builtin.mode == .Debug or builtin.is_test) break :blk NoopProvider;
|
||||
break :blk @import("lightpanda.zig").LightPanda;
|
||||
@@ -30,7 +34,7 @@ fn TelemetryT(comptime P: type) type {
|
||||
const Self = @This();
|
||||
|
||||
pub fn init(app: *App, run_mode: App.RunMode) !Self {
|
||||
const disabled = std.process.hasEnvVarConstant("LIGHTPANDA_DISABLE_TELEMETRY");
|
||||
const disabled = isDisabled();
|
||||
if (builtin.mode != .Debug and builtin.is_test == false) {
|
||||
log.info(.telemetry, "telemetry status", .{ .disabled = disabled });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user