diff --git a/Cargo.lock b/Cargo.lock index 051e8ebb..b441b75a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,11 +2,29 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "anyhow" version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +dependencies = [ + "backtrace", +] [[package]] name = "arc-swap" @@ -29,6 +47,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "bisection" version = "0.1.0" @@ -306,6 +339,12 @@ dependencies = [ "wasi", ] +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + [[package]] name = "gio" version = "0.15.5" @@ -569,6 +608,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1251ce8e8f9909600e127dcbe74ac50d8464e6685cf5953d37df7a741dbf9e9d" +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + [[package]] name = "memmap2" version = "0.5.8" @@ -587,6 +632,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + [[package]] name = "nodrop" version = "0.1.14" @@ -624,6 +678,15 @@ dependencies = [ "syn", ] +[[package]] +name = "object" +version = "0.30.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.9.0" @@ -858,6 +921,12 @@ dependencies = [ "libusb1-sys", ] +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustc_version" version = "0.3.3" diff --git a/Cargo.toml b/Cargo.toml index a3e73fa5..4873eb19 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ arc-swap = "1.6.0" lrumap = "0.1.0" memmap2 = "0.5.8" page_size = "0.5.0" -anyhow = "1.0.79" +anyhow = { version = "1.0.79", features = ["backtrace"] } [dev-dependencies] serde = { version = "1.0.136", features = ["derive"] } diff --git a/src/ui.rs b/src/ui.rs index 1348c879..a2d883fd 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -838,7 +838,8 @@ pub fn stop_luna() -> Result<(), Error> { pub fn display_error(result: Result<(), Error>) { #[cfg(not(feature="test-ui-replay"))] if let Err(e) = result { - let message = format!("{e}"); + let backtrace = e.backtrace(); + let message = format!("{e}\n\nBacktrace:\n\n{backtrace}"); gtk::glib::idle_add_once(move || { WINDOW.with(|win_opt| { match win_opt.borrow().as_ref() {