diff options
author | 2023-05-27 23:33:47 -0700 | |
---|---|---|
committer | 2023-05-27 23:33:47 -0700 | |
commit | 1388ec0d60e77cb0d71475fef33ab5764501b208 (patch) | |
tree | 738ff1c1382e4f3878db7826ece9b023095ce184 /src | |
parent | 4ba3ed512ac8407603c99d56d931038e0bdf0884 (diff) | |
download | bun-1388ec0d60e77cb0d71475fef33ab5764501b208.tar.gz bun-1388ec0d60e77cb0d71475fef33ab5764501b208.tar.zst bun-1388ec0d60e77cb0d71475fef33ab5764501b208.zip |
Fixes #2356 (#3098)
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/bindings/c-bindings.cpp | 7 | ||||
-rw-r--r-- | src/crash_reporter.zig | 28 |
2 files changed, 11 insertions, 24 deletions
diff --git a/src/bun.js/bindings/c-bindings.cpp b/src/bun.js/bindings/c-bindings.cpp index 90cb5e310..0e837d04f 100644 --- a/src/bun.js/bindings/c-bindings.cpp +++ b/src/bun.js/bindings/c-bindings.cpp @@ -4,6 +4,7 @@ #include <unistd.h> #include <sys/fcntl.h> #include <sys/stat.h> +#include <sys/signal.h> extern "C" int32_t get_process_priority(uint32_t pid) { @@ -34,3 +35,9 @@ extern "C" bool is_executable_file(const char* path) // regular file and user can execute return S_ISREG(st.st_mode) && (st.st_mode & S_IXUSR); } + +extern "C" void bun_ignore_sigpipe() +{ + // ignore SIGPIPE + signal(SIGPIPE, SIG_IGN); +}
\ No newline at end of file diff --git a/src/crash_reporter.zig b/src/crash_reporter.zig index e1ac54190..b583db248 100644 --- a/src/crash_reporter.zig +++ b/src/crash_reporter.zig @@ -44,17 +44,7 @@ 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), - }; - - try os.sigaction( - os.SIG.PIPE, - &pipe, - null, - ); + bun_ignore_sigpipe(); } const os = std.os; pub fn start() !void { @@ -65,17 +55,7 @@ pub fn start() !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), - }; - - try os.sigaction( - os.SIG.PIPE, - &pipe, - null, - ); - } + bun_ignore_sigpipe(); } + +extern fn bun_ignore_sigpipe() void; |