Skip to content

Commit

Permalink
pty: reset all signals after fork
Browse files Browse the repository at this point in the history
  • Loading branch information
mitchellh committed Aug 31, 2024
1 parent 9f6a28b commit e7cbeba
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/crash/sentry.zig
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,10 @@ fn initThread(gpa: Allocator) !void {
cache_dir.len,
);

// Debug logging for Sentry
sentry.c.sentry_options_set_debug(opts, @intFromBool(true));
if (comptime builtin.mode == .Debug) {
// Debug logging for Sentry
sentry.c.sentry_options_set_debug(opts, @intFromBool(true));
}

// Initialize
if (sentry.c.sentry_init(opts) != 0) return error.SentryInitFailed;
Expand Down
19 changes: 19 additions & 0 deletions src/pty.zig
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,25 @@ const PosixPty = struct {
/// This should be called prior to exec in the forked child process
/// in order to setup the tty properly.
pub fn childPreExec(self: Pty) !void {
// Reset our signals
var sa: posix.Sigaction = .{
.handler = .{ .handler = posix.SIG.DFL },
.mask = posix.empty_sigset,
.flags = 0,
};
try posix.sigaction(posix.SIG.ABRT, &sa, null);
try posix.sigaction(posix.SIG.ALRM, &sa, null);
try posix.sigaction(posix.SIG.BUS, &sa, null);
try posix.sigaction(posix.SIG.CHLD, &sa, null);
try posix.sigaction(posix.SIG.FPE, &sa, null);
try posix.sigaction(posix.SIG.HUP, &sa, null);
try posix.sigaction(posix.SIG.ILL, &sa, null);
try posix.sigaction(posix.SIG.INT, &sa, null);
try posix.sigaction(posix.SIG.SEGV, &sa, null);
try posix.sigaction(posix.SIG.TRAP, &sa, null);
try posix.sigaction(posix.SIG.TERM, &sa, null);
try posix.sigaction(posix.SIG.QUIT, &sa, null);

// Create a new process group
if (setsid() < 0) return error.ProcessGroupFailed;

Expand Down

0 comments on commit e7cbeba

Please sign in to comment.