summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJoakim Hulthe <joakim@hulthe.net>2024-05-02 11:54:13 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2024-06-25 17:21:07 +0200
commit9dfdf2fa52422709ce3df7a50643e0abc6ade319 (patch)
tree7d5f6366e317879c929e8ecb9fd6b2524990d368
parentf2ca4ad61115e8a53f9f271e3ddd1c6f6314216e (diff)
downloadmullvadvpn-9dfdf2fa52422709ce3df7a50643e0abc6ade319.tar.xz
mullvadvpn-9dfdf2fa52422709ce3df7a50643e0abc6ade319.zip
Print backtrace on caught fault signals (unix)
Useful for debugging nil derefs in linked Go code and whatnot. Co-authored-by: Sebastian Holmin <sebastian.holmin@mullvad.net>
-rw-r--r--mullvad-daemon/src/exception_logging/unix.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/mullvad-daemon/src/exception_logging/unix.rs b/mullvad-daemon/src/exception_logging/unix.rs
index 36d1f679dd..2bbbb62dad 100644
--- a/mullvad-daemon/src/exception_logging/unix.rs
+++ b/mullvad-daemon/src/exception_logging/unix.rs
@@ -4,6 +4,7 @@ use libc::siginfo_t;
use nix::sys::signal::{sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal};
use std::{
+ backtrace::Backtrace,
ffi::{c_int, c_void},
sync::Once,
};
@@ -84,5 +85,9 @@ extern "C" fn fault_handler(
};
log::error!("Caught signal {}", signal);
+ log::error!("Backtrace:");
+ for line in format!("{}", Backtrace::force_capture()).lines() {
+ log::error!("{line}");
+ }
std::process::exit(2);
}