aboutsummaryrefslogtreecommitdiff
path: root/src/crash_reporter.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/crash_reporter.zig')
-rw-r--r--src/crash_reporter.zig55
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,
+ );
+ }
}