diff options
Diffstat (limited to 'src/crash_reporter.zig')
-rw-r--r-- | src/crash_reporter.zig | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/src/crash_reporter.zig b/src/crash_reporter.zig index d98326530..14fc74e24 100644 --- a/src/crash_reporter.zig +++ b/src/crash_reporter.zig @@ -32,6 +32,11 @@ noinline fn sigpipe_handler(_: i32, _: *const std.os.siginfo_t, _: ?*const anyop bun.Output.debug("SIGPIPE received\n", .{}); } +noinline fn sighup_handler(_: i32, _: *const std.os.siginfo_t, _: ?*const anyopaque) callconv(.C) void { + const bun = @import("bun"); + bun.Output.debug("SIGHUP received\n", .{}); +} + pub fn reloadHandlers() !void { try os.sigaction(os.SIG.PIPE, null, null); try setup_sigactions(null); @@ -44,17 +49,33 @@ pub fn reloadHandlers() !void { try setup_sigactions(&act); - var pipe = os.Sigaction{ - .handler = .{ .sigaction = sigpipe_handler }, - .mask = os.empty_sigset, - .flags = (os.SA.SIGINFO | os.SA.RESTART | os.SA.RESETHAND), - }; + { + var pipe = os.Sigaction{ + .handler = .{ .sigaction = sigpipe_handler }, + .mask = os.empty_sigset, + .flags = (os.SA.SIGINFO | os.SA.RESTART | os.SA.RESETHAND), + }; + + try os.sigaction( + os.SIG.PIPE, + &pipe, + null, + ); + } + + { + var pipe = os.Sigaction{ + .handler = .{ .sigaction = sighup_handler }, + .mask = os.empty_sigset, + .flags = (os.SA.SIGINFO | os.SA.RESTART | os.SA.RESETHAND), + }; - try os.sigaction( - os.SIG.PIPE, - &pipe, - null, - ); + try os.sigaction( + os.SIG.HUP, + &pipe, + null, + ); + } } const os = std.os; pub fn start() !void { @@ -78,4 +99,18 @@ pub fn start() !void { null, ); } + + { + var pipe = os.Sigaction{ + .handler = .{ .sigaction = sighup_handler }, + .mask = os.empty_sigset, + .flags = (os.SA.SIGINFO | os.SA.RESTART | os.SA.RESETHAND), + }; + + try os.sigaction( + os.SIG.HUP, + &pipe, + null, + ); + } } |