From 53e0017c4ebc67dd6118dfc715c1faa33d1cda29 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 7 Aug 2021 16:58:11 +0100 Subject: [PATCH] eyre: resolve the backtrace Signed-off-by: Ian Jackson --- src/reporter.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/reporter.rs b/src/reporter.rs index 926b094..0daa0a6 100644 --- a/src/reporter.rs +++ b/src/reporter.rs @@ -109,7 +109,7 @@ use indenter::indented; #[derive(Debug)] struct EyreDedupHandler { - backtrace: Backtrace, + backtrace: Arc>, } type EyreDynError<'r> = &'r (dyn std::error::Error + 'static); @@ -137,7 +137,8 @@ impl eyre::EyreHandler for EyreDedupHandler { } } - let backtrace = &self.backtrace; + let mut backtrace = self.backtrace.lock(); + backtrace.resolve(); write!(f, "\n\nStack backtrace:\n{:?}", backtrace)?; } #[throws(fmt::Error)] @@ -150,6 +151,7 @@ impl eyre::EyreHandler for EyreDedupHandler { pub fn dedup_eyre_setup() { eyre::set_hook(Box::new(|_error| { let backtrace = Backtrace::new_unresolved(); + let backtrace = Arc::new(backtrace.into()); Box::new(EyreDedupHandler { backtrace }) })) .context("set error handler")?; -- 2.30.2