We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A patch that works, but doesn't allow for pretty formatting (as BacktraceFrame doesn't allow access to it's fields).
BacktraceFrame
From 3a716a93834cc7d1655ef3bad551385019142a4e Mon Sep 17 00:00:00 2001 From: Thomas de Zeeuw <[email protected]> Date: Sun, 16 Oct 2022 16:22:15 +0200 Subject: [PATCH 1/2] [WIP] Trim backtraces based on panic location --- src/config.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- src/lib.rs | 4 ++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/config.rs b/src/config.rs index 7c81059..af51233 100644 --- a/src/config.rs +++ b/src/config.rs @@ -133,9 +133,54 @@ pub(crate) fn get_log_targets() -> Targets { /// Panic hook that logs the panic using [`log::error!`]. #[cfg(feature = "log-panic")] fn log_panic(info: &std::panic::PanicInfo<'_>) { - use std::backtrace::Backtrace; + use std::backtrace::{Backtrace, BacktraceStatus}; + use std::fmt::{self, Write}; + use std::panic::Location; use std::thread; + use log::kv::{ToValue, Value}; + + struct ShortBackTrace<'a>(&'a Backtrace, Option<&'a Location<'a>>); + + impl<'a> ToValue for ShortBackTrace<'a> { + fn to_value(&self) -> Value<'_> { + Value::from_dyn_display(self) + } + } + + impl<'a> fmt::Display for ShortBackTrace<'a> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self.0.status() { + BacktraceStatus::Captured => { /* Continue. */ } + BacktraceStatus::Disabled => return f.write_str("backtrace disabled"), + BacktraceStatus::Unsupported => return f.write_str("backtrace unsupported"), + _ => { /* Will attempt to print a backtrace. */ } + } + + let file = match self.1 { + Some(loc) => loc.file(), + // Don't have a panic location, so we don't to where to shorten + // the backtrace. + None => return fmt::Display::fmt(self.0, f), + }; + + let mut frame_data = String::new(); + let mut skip = 0; + for (i, frame) in self.0.frames().into_iter().enumerate() { + frame_data.clear(); + write!(&mut frame_data, "{frame:?}").unwrap(); + if frame_data.contains(file) { + skip = i; + break; + } + } + for (n, frame) in self.0.frames()[skip..].into_iter().enumerate() { + write!(f, "{n}. {frame:?}\n")?; + } + Ok(()) + } + } + let thread = thread::current(); let thread_name = thread.name().unwrap_or("unnamed"); let (file, line) = match info.location() { @@ -152,7 +197,7 @@ fn log_panic(info: &std::panic::PanicInfo<'_>) { .target(PANIC_TARGET) .file(Some(file)) .line(Some(line)) - .key_values(&("backtrace", &backtrace as &dyn std::fmt::Display)) + .key_values(&("backtrace", ShortBackTrace(&backtrace, info.location()))) .build(), ); } diff --git a/src/lib.rs b/src/lib.rs index cad8204..c78b137 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -264,6 +264,10 @@ //! [Timestamp feature]: #timestamp-feature #![warn(missing_debug_implementations, missing_docs, unused_results)] +#![cfg_attr( + all(feature = "log-panic", feature = "nightly"), + feature(backtrace_frames) +)] use std::cell::RefCell; use std::io::{self, IoSlice, Write}; -- 2.37.3
Formats:
From 7695fb22df04253e412e273cfa67c5715308c37f Mon Sep 17 00:00:00 2001 From: Thomas de Zeeuw <[email protected]> Date: Sun, 16 Oct 2022 16:22:57 +0200 Subject: [PATCH 2/2] [WIP] Add file with backtrace formats Don't commit this. --- backtrace.formats | 163 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 backtrace.formats diff --git a/backtrace.formats b/backtrace.formats new file mode 100644 index 0000000..e5b5415 --- /dev/null +++ b/backtrace.formats @@ -0,0 +1,163 @@ +# Original (fmt::Display) + +ts="2022-10-16T13:57:42.951460Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace=" 0: std::backtrace_rs::backtrace::libunwind::trace + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 + 1: std::backtrace_rs::backtrace::trace_unsynchronized + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 + 2: std::backtrace::Backtrace::create + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs:333:13 + 3: std::backtrace::Backtrace::force_capture + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs:314:9 + 4: std_logger::config::log_panic + at ./src/config.rs:156:21 + 5: core::ops::function::Fn::call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs:78:5 + 6: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/alloc/src/boxed.rs:1952:9 + 7: std::panicking::rust_panic_with_hook + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:692:13 + 8: std::panicking::begin_panic_handler::{{closure}} + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:577:13 + 9: std::sys_common::backtrace::__rust_end_short_backtrace + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs:138:18 + 10: rust_begin_unwind + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:575:5 + 11: core::panicking::panic_fmt + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/panicking.rs:65:14 + 12: panic::main + at ./examples/panic.rs:15:5 + 13: core::ops::function::FnOnce::call_once + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs:251:5 + 14: std::sys_common::backtrace::__rust_begin_short_backtrace + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs:122:18 + 15: std::rt::lang_start::{{closure}} + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:166:18 + 16: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs:286:13 + 17: std::panicking::try::do_call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:483:40 + 18: std::panicking::try + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:447:19 + 19: std::panic::catch_unwind + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs:137:14 + 20: std::rt::lang_start_internal::{{closure}} + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:148:48 + 21: std::panicking::try::do_call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:483:40 + 22: std::panicking::try + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:447:19 + 23: std::panic::catch_unwind + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs:137:14 + 24: std::rt::lang_start_internal + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:148:20 + 25: std::rt::lang_start + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:165:17 + 26: _main +" + +# Original (fmt::Debug) + +ts="2022-10-16T13:58:21.833870Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="Backtrace [{ fn: "std::backtrace_rs::backtrace::libunwind::trace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, { fn: "std::backtrace_rs::backtrace::trace_unsynchronized", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, { fn: "std::backtrace::Backtrace::create", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 333 }, { fn: "std::backtrace::Backtrace::force_capture", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 314 }, { fn: "std_logger::config::log_panic", file: "./src/config.rs", line: 156 }, { fn: "core::ops::function::Fn::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 78 }, { fn: "<alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/alloc/src/boxed.rs", line: 1952 }, { fn: "std::panicking::rust_panic_with_hook", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 692 }, { fn: "std::panicking::begin_panic_handler::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 577 }, { fn: "std::sys_common::backtrace::__rust_end_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 138 }, { fn: "rust_begin_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 575 }, { fn: "core::panicking::panic_fmt", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/panicking.rs", line: 65 }, { fn: "panic::main", file: "./examples/panic.rs", line: 15 }, { fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }, { fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }, { fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }, { fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, { fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }, { fn: "_main" }]" + +# Original (fmt::Debug alternative) + +ts="2022-10-16T14:09:55.445651Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="[ + [ + { fn: "std::backtrace_rs::backtrace::libunwind::trace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, + { fn: "std::backtrace_rs::backtrace::trace_unsynchronized", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, + { fn: "std::backtrace::Backtrace::create", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 333 }, + ], + [ + { fn: "std::backtrace::Backtrace::force_capture", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 314 }, + ], + [ + { fn: "std_logger::config::log_panic", file: "./src/config.rs", line: 180 }, + ], + [ + { fn: "core::ops::function::Fn::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 78 }, + ], + [ + { fn: "<alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/alloc/src/boxed.rs", line: 1952 }, + { fn: "std::panicking::rust_panic_with_hook", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 692 }, + ], + [ + { fn: "std::panicking::begin_panic_handler::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 577 }, + ], + [ + { fn: "std::sys_common::backtrace::__rust_end_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 138 }, + ], + [ + { fn: "rust_begin_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 575 }, + ], + [ + { fn: "core::panicking::panic_fmt", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/panicking.rs", line: 65 }, + ], + [ + { fn: "panic::main", file: "./examples/panic.rs", line: 15 }, + ], + [ + { fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }, + ], + [ + { fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }, + ], + [ + { fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }, + ], + [ + { fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + ], + [ + { fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }, + ], + [ + { fn: "_main" }, + ], +]" + + +# Trimmed (fmt::Debug) + +ts="2022-10-16T14:09:02.462919Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="[[{ fn: "panic::main", file: "./examples/panic.rs", line: 15 }], [{ fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }], [{ fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }], [{ fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }], [{ fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }], [{ fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }], [{ fn: "_main" }]]" + +# Trimmer (fmt::Debug alternative) + +ts="2022-10-16T14:10:34.497084Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="[ + [ + { fn: "panic::main", file: "./examples/panic.rs", line: 15 }, + ], + [ + { fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }, + ], + [ + { fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }, + ], + [ + { fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }, + ], + [ + { fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + ], + [ + { fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }, + ], + [ + { fn: "_main" }, + ], +]" -- 2.37.3
The text was updated successfully, but these errors were encountered:
Also see my comment in the rustc tracking issue: rust-lang/rust#79676 (comment).
Sorry, something went wrong.
No branches or pull requests
A patch that works, but doesn't allow for pretty formatting (as
BacktraceFrame
doesn't allow access to it's fields).Formats:
The text was updated successfully, but these errors were encountered: