summaryrefslogtreecommitdiff
path: root/src/coredump
diff options
context:
space:
mode:
Diffstat (limited to 'src/coredump')
-rw-r--r--src/coredump/coredump.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c
index 994d968d87..10a96ab568 100644
--- a/src/coredump/coredump.c
+++ b/src/coredump/coredump.c
@@ -1271,6 +1271,13 @@ static int process_kernel(int argc, char* argv[]) {
struct iovec_wrapper *iovw;
int r;
+ /* When we're invoked by the kernel, stdout/stderr are closed which is dangerous because the fds
+ * could get reallocated. To avoid hard to debug issues, let's instead bind stdout/stderr to
+ * /dev/null. */
+ r = rearrange_stdio(STDIN_FILENO, -1, -1);
+ if (r < 0)
+ return log_error_errno(r, "Failed to connect stdout/stderr to /dev/null: %m");
+
log_debug("Processing coredump received from the kernel...");
iovw = iovw_new();