-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
A patch that works, but doesn't allow for pretty formatting (as BacktraceFrame
doesn't allow access to it's fields).
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
Metadata
Metadata
Assignees
Labels
No labels