From 9672858b480e736e9a5d83a0cb93afaa54cf47f4 Mon Sep 17 00:00:00 2001 From: Samuel Date: Thu, 25 Apr 2024 16:55:44 -0300 Subject: [PATCH] Implement debug crash handler dialog (#139) --- CHANGELOG.md | 1 + crates/zng-app/src/crash_handler.rs | 137 ++++++++++++-- crates/zng-view-api/src/app_process.rs | 2 +- crates/zng/src/app.rs | 252 +++++++++++++++++++++++++ examples/README.md | 2 +- examples/animation.rs | 1 + examples/border.rs | 1 + examples/button.rs | 1 + examples/calculator.rs | 1 + examples/config.rs | 1 + examples/countdown.rs | 1 + examples/cursor.rs | 1 + examples/extend_view.rs | 1 + examples/focus.rs | 1 + examples/gradient.rs | 1 + examples/icon.rs | 1 + examples/image.rs | 1 + examples/layer.rs | 1 + examples/localize.rs | 1 + examples/markdown.rs | 1 + examples/res/screenshots/respawn.png | Bin 60871 -> 57500 bytes examples/respawn.rs | 102 ++++++---- examples/scroll.rs | 1 + examples/shortcut.rs | 1 + examples/text.rs | 1 + examples/transform.rs | 1 + examples/window.rs | 1 + 27 files changed, 459 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 204633061..22b8e1ed6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Adds `zng::app::crash_handler`. - Can be used to easily implement crash reporting, stacktrace and minidump collection, app restart on crash. + - Call `zng::app::crash_handler::init_debug()` to quickly setup panic and minidump collection. * Fix view-process kill by user not working after respawn. * Fix view-process assuming any signal kill was requested by the user. * Fix potential issue retrieving current_exe trough symbolic links. diff --git a/crates/zng-app/src/crash_handler.rs b/crates/zng-app/src/crash_handler.rs index 254af61af..19a860c74 100644 --- a/crates/zng-app/src/crash_handler.rs +++ b/crates/zng-app/src/crash_handler.rs @@ -9,7 +9,7 @@ use std::{ fmt, io::{BufRead, BufReader}, path::{Path, PathBuf}, - time::{Duration, SystemTime}, + time::SystemTime, }; use zng_layout::unit::TimeUnits as _; @@ -184,18 +184,12 @@ pub struct CrashError { /// Minidump file. pub minidump: Option, } +/// Alternate mode `{:#}` prints plain stdout and stderr (no ANSI escape sequences). impl fmt::Display for CrashError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - writeln!( - f, - "timestamp: {}", - self.timestamp - .duration_since(SystemTime::UNIX_EPOCH) - .unwrap_or(Duration::ZERO) - .as_secs() - )?; + writeln!(f, "timestamp: {}", self.unix_time())?; if let Some(c) = self.code { - writeln!(f, "exit code: {c:#x}")? + writeln!(f, "exit code: {c:#X}")? } if let Some(c) = self.signal { writeln!(f, "exit signal: {c}")? @@ -203,7 +197,11 @@ impl fmt::Display for CrashError { if let Some(p) = self.minidump.as_ref() { writeln!(f, "minidump: {}", p.display())? } - write!(f, "\nSTDOUT:\n{}\nSTDERR:\n{}\n", self.stdout, self.stderr) + if f.alternate() { + write!(f, "\nSTDOUT:\n{}\nSTDERR:\n{}\n", self.stdout_plain(), self.stderr_plain()) + } else { + write!(f, "\nSTDOUT:\n{}\nSTDERR:\n{}\n", self.stdout, self.stderr) + } } } impl CrashError { @@ -233,13 +231,56 @@ impl CrashError { } } + /// Seconds since Unix epoch. + pub fn unix_time(&self) -> u64 { + self.timestamp.duration_since(SystemTime::UNIX_EPOCH).unwrap_or_default().as_secs() + } + + /// Gets if `stdout` does not contain any ANSI scape sequences. + pub fn is_stdout_plain(&self) -> bool { + !self.stdout.contains(CSI) + } + + /// Gets if `stderr` does not contain any ANSI scape sequences. + pub fn is_stderr_plain(&self) -> bool { + !self.stderr.contains(CSI) + } + + /// Get `stdout` without any ANSI escape sequences (CSI). + pub fn stdout_plain(&self) -> Txt { + remove_ansi_csi(&self.stdout) + } + + /// Get `stderr` without any ANSI escape sequences (CSI). + pub fn stderr_plain(&self) -> Txt { + remove_ansi_csi(&self.stderr) + } + + /// Gets if `stderr` contains a crash panic. + pub fn has_panic(&self) -> bool { + if self.code == Some(101) { + CrashPanic::contains(&self.stderr_plain()) + } else { + false + } + } + + /// Gets if `stderr` contains a crash panic that traced widget/window path. + pub fn has_panic_widget(&self) -> bool { + if self.code == Some(101) { + CrashPanic::contains_widget(&self.stderr_plain()) + } else { + false + } + } + /// Try parse `stderr` for the crash panic. /// /// Only reliably works if the panic fully printed correctly and was formatted by the panic /// hook installed by `crash_handler` or by the display print of [`CrashPanic`]. pub fn find_panic(&self) -> Option { if self.code == Some(101) { - CrashPanic::find(&self.stderr) + CrashPanic::find(&self.stderr_plain()) } else { None } @@ -254,15 +295,17 @@ impl CrashError { } else if let Some(msg) = self.minidump_message() { msg } else { - "Error.".into() + "".into() }; use std::fmt::Write as _; if let Some(c) = self.code { - write!(&mut msg, " Code: {c:#x}.").unwrap(); + let sep = if msg.is_empty() { "" } else { "\n" }; + write!(&mut msg, "{sep}Code: {c:#X}").unwrap(); } if let Some(c) = self.signal { - write!(&mut msg, " Signal: {c}.").unwrap(); + let sep = if msg.is_empty() { "" } else { "\n" }; + write!(&mut msg, "{sep}Signal: {c}").unwrap(); } msg.end_mut(); msg @@ -300,6 +343,29 @@ impl CrashError { } } +const CSI: &str = "\x1b["; + +/// Remove ANSI escape sequences (CSI) from `s`. +pub fn remove_ansi_csi(mut s: &str) -> Txt { + fn is_esc_end(byte: u8) -> bool { + (0x40..=0x7e).contains(&byte) + } + + let mut r = String::new(); + while let Some(i) = s.find(CSI) { + r.push_str(&s[..i]); + s = &s[i + CSI.len()..]; + let mut esc_end = 0; + while esc_end < s.len() && !is_esc_end(s.as_bytes()[esc_end]) { + esc_end += 1; + } + esc_end += 1; + s = &s[esc_end..]; + } + r.push_str(s); + r.into() +} + /// Panic parsed from a `stderr` dump. #[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)] pub struct CrashPanic { @@ -332,11 +398,32 @@ impl fmt::Display for CrashPanic { } } impl CrashPanic { + /// Gets if `stderr` contains a panic that can be parsed by [`find`]. + /// + /// [`find`]: Self::find + pub fn contains(stderr: &str) -> bool { + Self::find_impl(stderr, false).is_some() + } + + /// Gets if `stderr` contains a panic that can be parsed by [`find`] and traced a widget/window path. + /// + /// [`find`]: Self::find + pub fn contains_widget(stderr: &str) -> bool { + match Self::find_impl(stderr, false) { + Some(p) => !p.widget_path.is_empty(), + None => false, + } + } + /// Try parse `stderr` for the crash panic. /// /// Only reliably works if the panic fully printed correctly and was formatted by the panic /// hook installed by `crash_handler` or by the display print of this type. pub fn find(stderr: &str) -> Option { + Self::find_impl(stderr, true) + } + + fn find_impl(stderr: &str, parse: bool) -> Option { let mut panic_at = usize::MAX; let mut widget_path = usize::MAX; let mut stack_backtrace = usize::MAX; @@ -358,6 +445,22 @@ impl CrashPanic { return None; } + if !parse { + return Some(Self { + thread: Txt::from(""), + message: Txt::from(""), + file: Txt::from(""), + line: 0, + column: 0, + widget_path: if widget_path < stderr.len() { + Txt::from("true") + } else { + Txt::from("") + }, + backtrace: Txt::from(""), + }); + } + let panic_str = stderr[panic_at..].lines().next().unwrap(); let (thread, location) = panic_str.strip_prefix("thread '").unwrap().split_once("' panicked at ").unwrap(); let mut location = location.split(':'); @@ -382,7 +485,7 @@ impl CrashPanic { } let widget_path = if widget_path < stderr.len() { - stderr[widget_path..].lines().nth(1).unwrap().trim() + stderr[widget_path..].lines().next().unwrap().trim() } else { "" }; @@ -482,7 +585,7 @@ fn crash_handler_monitor_process(mut cfg_app: ConfigProcess, mut cfg_dialog: Con } tracing::error!( - "app-process crashed with exit code ({:#x}), signal ({:#?}), {} crashes previously", + "app-process crashed with exit code ({:#X}), signal ({:#?}), {} crashes previously", code.unwrap_or(0), signal.unwrap_or(0), dialog_args.app_crashes.len() diff --git a/crates/zng-view-api/src/app_process.rs b/crates/zng-view-api/src/app_process.rs index 5e926f320..ea8751ab5 100644 --- a/crates/zng-view-api/src/app_process.rs +++ b/crates/zng-view-api/src/app_process.rs @@ -411,7 +411,7 @@ impl Controller { if !killed_by_us { let code = code.unwrap_or(0); let signal = signal.unwrap_or(0); - tracing::error!(target: "vp_respawn", "view-process exit code: {code:#x}, signal: {signal}"); + tracing::error!(target: "vp_respawn", "view-process exit code: {code:#X}, signal: {signal}"); } let stderr = match String::from_utf8(c.stderr) { diff --git a/crates/zng/src/app.rs b/crates/zng/src/app.rs index 8c9e47aaa..9b6531185 100644 --- a/crates/zng/src/app.rs +++ b/crates/zng/src/app.rs @@ -537,4 +537,256 @@ pub use zng_ext_single_instance::{is_single_instance, single_instance, single_in pub mod crash_handler { #[cfg(feature = "crash_handler")] pub use zng_app::crash_handler::{init, restart_count, CrashArgs, CrashConfig, CrashError, CrashPanic}; + + /// Init a crash-handler with dialog that shows detailed debug info. + pub fn init_debug() { + init(debug_config()) + } + + /// Config used by [`init_debug`] + pub fn debug_config() -> CrashConfig { + CrashConfig::new(super::crash_handler_dbg::dialog) + } +} + +mod crash_handler_dbg { + use std::path::PathBuf; + + use crate::{ + ansi_text::AnsiText, + app::crash_handler::*, + color::ColorScheme, + prelude::*, + widget::node::{presenter, BoxedUiNode}, + }; + + pub fn dialog(args: CrashArgs) -> ! { + if let Some(c) = &args.dialog_crash { + eprintln!("DEBUG CRASH DIALOG CRASHED"); + eprintln!(" {}", c.message()); + eprintln!("APP CRASH"); + eprintln!(" {}", args.latest().message()); + args.exit(0xBADC0DE) + } + + // Just in case no view-process was inited before the crash_handler setup. + // Multiple view-process inits are ok because they either do nothing or never return. + #[cfg(feature = "view_prebuilt")] + crate::view_process::prebuilt::init(); + #[cfg(feature = "view")] + crate::view_process::default::init(); + + APP.defaults().run_window(async_clmv!(args, { + let error = args.latest(); + Window! { + title = APP.about().map(|a| formatx!("{}App Crashed", a.title_prefix())); + start_position = zng::window::StartPosition::CenterMonitor; + color_scheme = ColorScheme::Dark; + + on_load = hn_once!(|_| { + // force to foreground + let _ = WINDOWS.focus(WINDOW.id()); + }); + on_close = hn_once!(args, |_| { + args.exit(0); + }); + + padding = 5; + child_top = header(error), 5; + child = panels(error); + child_bottom = commands(args), 5; + } + })); + + args.exit(0); + } + + fn header(error: &CrashError) -> impl UiNode { + SelectableText! { + txt = error.message(); + layout::margin = 10; + } + } + + fn panels(error: &CrashError) -> impl UiNode { + let mut options = vec![ErrorPanel::Summary]; + let mut active = ErrorPanel::Summary; + + if !error.stdout.is_empty() { + options.push(ErrorPanel::StdoutPlain); + active = ErrorPanel::StdoutPlain; + if !error.is_stdout_plain() { + options.push(ErrorPanel::Stdout); + active = ErrorPanel::Stdout; + } + } + + if !error.stderr.is_empty() { + options.push(ErrorPanel::StderrPlain); + active = ErrorPanel::StderrPlain; + if !error.is_stderr_plain() { + options.push(ErrorPanel::Stderr); + active = ErrorPanel::Stderr; + } + } + + if error.has_panic() { + options.push(ErrorPanel::Panic); + active = ErrorPanel::Panic; + } + if error.has_panic_widget() { + options.push(ErrorPanel::Widget); + } + if error.minidump.is_some() { + options.push(ErrorPanel::Minidump); + active = ErrorPanel::Minidump; + } + + let active = var(active); + + Container! { + child_top = Wrap! { + toggle::selector = toggle::Selector::single(active.clone()); + children = options.iter().map(|p| Toggle! { + child = Text!(p.title()); + value = *p; + }).collect::(); + toggle::style_fn = Style! { + layout::padding = (2, 4); + widget::corner_radius = 2; + }; + spacing = 5; + }, 5; + child = presenter(active, wgt_fn!(error, |p: ErrorPanel| p.panel(&error))); + } + } + + #[derive(Debug, Clone, Copy, PartialEq, Eq)] + enum ErrorPanel { + Summary, + Stdout, + Stderr, + StdoutPlain, + StderrPlain, + Panic, + Widget, + Minidump, + } + impl ErrorPanel { + fn title(&self) -> Txt { + match self { + ErrorPanel::Summary => "Summary", + ErrorPanel::Stdout => "Stdout", + ErrorPanel::Stderr => "Stderr", + ErrorPanel::StdoutPlain => "Stdout (plain)", + ErrorPanel::StderrPlain => "Stderr (plain)", + ErrorPanel::Panic => "Panic", + ErrorPanel::Widget => "Widget", + ErrorPanel::Minidump => "Minidump", + } + .into() + } + + fn panel(&self, error: &CrashError) -> BoxedUiNode { + match self { + ErrorPanel::Summary => summary_panel(error).boxed(), + ErrorPanel::Stdout => std_panel(error.stdout.clone()).boxed(), + ErrorPanel::Stderr => std_panel(error.stderr.clone()).boxed(), + ErrorPanel::StdoutPlain => std_plain_panel(error.stdout_plain()).boxed(), + ErrorPanel::StderrPlain => std_plain_panel(error.stderr_plain()).boxed(), + ErrorPanel::Panic => panic_panel(error.find_panic().unwrap()).boxed(), + ErrorPanel::Widget => widget_panel(error.find_panic().unwrap().widget_path).boxed(), + ErrorPanel::Minidump => minidump_panel(error.minidump.clone().unwrap()).boxed(), + } + } + } + + fn summary_panel(error: &CrashError) -> impl UiNode { + let s = formatx!( + "Timestamp: {}\nExit Code: {}\nSignal: {}\nStderr: {} bytes\nStdout: {} bytes\nPanic: {}\nMinidump: {}\n\nArgs: {:?}\n", + error.unix_time(), + match error.code { + Some(c) => format!("{c:#x}"), + None => "".to_owned(), + }, + match error.signal { + Some(c) => format!("{c}"), + None => "".to_owned(), + }, + error.stderr.len(), + error.stdout.len(), + error.find_panic().is_some(), + match &error.minidump { + Some(p) => { + let path = p.display().to_string(); + let path = path.trim_start_matches(r"\\?\"); + path.to_owned() + } + None => "".to_owned(), + }, + error.args, + ); + plain_panel(s) + } + + fn std_panel(std: Txt) -> impl UiNode { + Scroll! { + child_align = Align::TOP_START; + widget::background_color = colors::BLACK; + layout::padding = 5; + child = AnsiText! { + txt = std; + font_size = 0.9.em(); + } + } + } + fn std_plain_panel(std: Txt) -> impl UiNode { + plain_panel(std) + } + fn panic_panel(panic: CrashPanic) -> impl UiNode { + plain_panel(panic.to_txt()) + } + fn widget_panel(widget_path: Txt) -> impl UiNode { + plain_panel(widget_path) + } + fn minidump_panel(path: PathBuf) -> impl UiNode { + let path = path.display().to_string(); + let path = path.trim_start_matches(r"\\?\"); + plain_panel(path.to_txt()) + } + fn plain_panel(txt: Txt) -> impl UiNode { + Scroll! { + child_align = Align::TOP_START; + widget::background_color = colors::BLACK; + layout::padding = 5; + child = SelectableText! { + txt; + font_size = 0.9.em(); + // same as AnsiText + font_family = ["JetBrains Mono", "Consolas", "monospace"]; + } + } + } + + fn commands(args: CrashArgs) -> impl UiNode { + Stack! { + spacing = 5; + direction = StackDirection::start_to_end(); + layout::align = Align::END; + children = ui_vec![ + Button! { + child = Text!("Restart App"); + on_click = hn_once!(args, |_| { + args.restart(); + }); + }, + Button! { + child = Text!("Exit App"); + on_click = hn_once!(|_| { + args.exit(0); + }); + } + ]; + } + } } diff --git a/examples/README.md b/examples/README.md index 028d724d7..2925d1c3f 100644 --- a/examples/README.md +++ b/examples/README.md @@ -198,7 +198,7 @@ Source: [respawn.rs](./respawn.rs) cargo do run respawn ``` -Demonstrates the view-process respawn error recovery feature. +Demonstrates app-process crash handler and view-process respawn. ### `scroll` diff --git a/examples/animation.rs b/examples/animation.rs index f8108112b..b5f0a6a20 100644 --- a/examples/animation.rs +++ b/examples/animation.rs @@ -27,6 +27,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("animation"); diff --git a/examples/border.rs b/examples/border.rs index 9fba4849a..b5f0a0303 100644 --- a/examples/border.rs +++ b/examples/border.rs @@ -11,6 +11,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); //let rec = examples_util::record_profile("border"); diff --git a/examples/button.rs b/examples/button.rs index df1ca3fac..d90c8bb94 100644 --- a/examples/button.rs +++ b/examples/button.rs @@ -17,6 +17,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("button"); diff --git a/examples/calculator.rs b/examples/calculator.rs index 929d6eb42..d09f9fdf8 100644 --- a/examples/calculator.rs +++ b/examples/calculator.rs @@ -12,6 +12,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); //let rec = examples_util::record_profile("calculator"); diff --git a/examples/config.rs b/examples/config.rs index 4c0669950..b4c814fb0 100644 --- a/examples/config.rs +++ b/examples/config.rs @@ -17,6 +17,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("button"); diff --git a/examples/countdown.rs b/examples/countdown.rs index 4543c9083..02b3c6c21 100644 --- a/examples/countdown.rs +++ b/examples/countdown.rs @@ -8,6 +8,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // view_process::run_same_process(app_main); app_main(); diff --git a/examples/cursor.rs b/examples/cursor.rs index a1cdb4a3d..60131e6ab 100644 --- a/examples/cursor.rs +++ b/examples/cursor.rs @@ -15,6 +15,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // view_process::run_same_process(app_main); app_main(); diff --git a/examples/extend_view.rs b/examples/extend_view.rs index 218b28e04..7d9577a9b 100644 --- a/examples/extend_view.rs +++ b/examples/extend_view.rs @@ -11,6 +11,7 @@ use zng_view::extensions::ViewExtensions; fn main() { examples_util::print_info(); + zng::app::crash_handler::init_debug(); // zng_view::init_extended(view_extensions); // app_main(); diff --git a/examples/focus.rs b/examples/focus.rs index 4a981ddc2..c02e6b844 100644 --- a/examples/focus.rs +++ b/examples/focus.rs @@ -25,6 +25,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("focus"); diff --git a/examples/gradient.rs b/examples/gradient.rs index 34bf34fec..b5ddc21c6 100644 --- a/examples/gradient.rs +++ b/examples/gradient.rs @@ -18,6 +18,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // view_process::run_same_process(app_main); app_main(); diff --git a/examples/icon.rs b/examples/icon.rs index d9cb37600..5db1b795a 100644 --- a/examples/icon.rs +++ b/examples/icon.rs @@ -27,6 +27,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("icon"); diff --git a/examples/image.rs b/examples/image.rs index 28429aa04..7436b3fa3 100644 --- a/examples/image.rs +++ b/examples/image.rs @@ -27,6 +27,7 @@ use zng_wgt_webrender_debug as wr; fn main() { examples_util::print_info(); // view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("image"); diff --git a/examples/layer.rs b/examples/layer.rs index 87cd2359d..de9d62ee8 100644 --- a/examples/layer.rs +++ b/examples/layer.rs @@ -17,6 +17,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("layer"); diff --git a/examples/localize.rs b/examples/localize.rs index 9cfa4e2bf..0f646dc3a 100644 --- a/examples/localize.rs +++ b/examples/localize.rs @@ -26,6 +26,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("localize"); diff --git a/examples/markdown.rs b/examples/markdown.rs index 797c8f086..7961f43d0 100644 --- a/examples/markdown.rs +++ b/examples/markdown.rs @@ -15,6 +15,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("markdown"); diff --git a/examples/res/screenshots/respawn.png b/examples/res/screenshots/respawn.png index e109a0974692c98e92c62c16b49e5d14518979ca..be93f3ed290d985c6c4881c0957a219ca264665b 100644 GIT binary patch literal 57500 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

W6#k((t%} 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

dHpE_%x(Yf@W+gDIYizwWGFhWX}w|n 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 k#k2Ik0rmb5O-LVboxBmm9Q35 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 JYNX6U{};_z{*?d# diff --git a/examples/respawn.rs b/examples/respawn.rs index ece4d3c8e..fb874876b 100644 --- a/examples/respawn.rs +++ b/examples/respawn.rs @@ -15,7 +15,8 @@ fn main() { examples_util::print_info(); // init crash-handler before view to use different view for the crash dialog app. - zng::app::crash_handler::init(zng::app::crash_handler::CrashConfig::new(app_crash_dialog)); + zng::app::crash_handler::init_debug(); + // zng::app::crash_handler::init(zng::app::crash_handler::CrashConfig::new(app_crash_dialog)); // this is the normal app-process: @@ -32,29 +33,49 @@ fn main() { child = Stack! { direction = StackDirection::top_to_bottom(); layout::margin = 10; - spacing = 5; + spacing = 10; children_align = Align::TOP; children = ui_vec![ Markdown! { + layout::margin = (20, 0, 0, 0); txt = "The renderer and OS windows are created in separate process, the `view-process`. \ It automatically respawns in case of a graphics driver crash or other similar fatal error."; }, - view_respawn(), - view_crash(), + Wrap! { + spacing = 5; + children = ui_vec![ + view_respawn(), + view_crash(), + ], + }, Markdown! { + layout::margin = (20, 0, 0, 0); txt = "When the app is instantiated the crash handler takes over the process, becoming the `monitor-process`. \ It spawns the `app-process` that is the normal execution. If the `app-process` crashes it spawns the \ `dialog-process` that runs a different app that shows an error message."; }, - app_crash(true), - app_crash(false), + Wrap! { + spacing = 5; + children = ui_vec![ + app_crash("panic"), + app_crash("access violation"), + app_crash("stack overflow"), + app_crash("custom exit"), + ], + }, Markdown! { + layout::margin = (20, 0, 0, 0); txt = "The states of these buttons is only preserved for `view-process` crashes. \ use `CONFIG` or some other state saving to better recover from `app-process` crashes."; }, - click_counter(), - click_counter(), - image(), + Wrap! { + spacing = 5; + children = ui_vec![ + click_counter(), + image(), + click_counter(), + ], + }, ]; }; } @@ -62,33 +83,28 @@ fn main() { } // Crash dialog app, runs in the dialog-process. +#[allow(unused)] fn app_crash_dialog(args: zng::app::crash_handler::CrashArgs) -> ! { zng::view_process::prebuilt::init(); APP.defaults().run_window(async move { Window! { title = "Respawn Example - App Crashed"; icon = WindowIcon::render(icon); + start_position = zng::window::StartPosition::CenterMonitor; + auto_size = window::AutoSize::CONTENT; + min_size = (300, 100); on_load = hn_once!(|_| { // force to foreground let _ = WINDOWS.focus(WINDOW.id()); }); - on_close = hn_once!(args, |_| { - args.exit(0); - }); padding = 5; - child_top = Markdown!( - "The Respawn Example app has crashed.\n\n{}\n\n**Details:**\n", + child = Markdown!( + "The Respawn Example app has crashed.\n\n{}\n\n", args.latest().message(), - ), 5; - child = Scroll! { - padding = 5; - child_align = Align::TOP_START; - child = zng::ansi_text::AnsiText!(args.latest().to_txt()); - widget::background_color = colors::BLACK; - }; + ); child_bottom = Stack! { spacing = 5; direction = StackDirection::start_to_end(); @@ -117,7 +133,7 @@ fn app_crash_dialog(args: zng::app::crash_handler::CrashArgs) -> ! { }, 5; } }); - panic!("dialog app did not respond correctly") + std::process::exit(0) } fn view_respawn() -> impl UiNode { @@ -143,18 +159,32 @@ fn view_crash() -> impl UiNode { } } -fn app_crash(panic: bool) -> impl UiNode { +fn app_crash(crash_name: &'static str) -> impl UiNode { Button! { - child = Text!("Crash App-Process ({})", if panic { "panic" } else { "access violation" }); + child = Text!("Crash ({crash_name})"); on_click = hn!(|_| { - if panic { - panic!("Test app-process crash!"); - } else { - // SAFETY: deliberate access violation - #[allow(deref_nullptr)] - unsafe { - *std::ptr::null_mut() = true; + match crash_name { + "panic" => panic!("Test app-process crash!"), + "access violation" => { + // SAFETY: deliberate access violation + #[allow(deref_nullptr)] + unsafe { + *std::ptr::null_mut() = true; + } } + "stack overflow" => { + fn overflow(c: u64) { + if c < u64::MAX { + overflow(c + 1) + } + } + overflow(0) + } + "custom exit" => { + eprintln!("custom error"); + std::process::exit(0xBAD); + } + n => panic!("Unknown crash '{n}'"), } }); } @@ -175,13 +205,9 @@ fn click_counter() -> impl UiNode { } fn image() -> impl UiNode { - Stack! { - direction = StackDirection::top_to_bottom(); - spacing = 3; - children = ui_vec![ - text::Strong!("Image:"), - Image! { source = include_bytes!("res/window/icon-bytes.png"); size = (32, 32); }, - ]; + Image! { + source = include_bytes!("res/window/icon-bytes.png"); size = (32, 32); + tooltip = Tip!(Text!("Image reloads after respawn")); } } diff --git a/examples/scroll.rs b/examples/scroll.rs index 3263325ce..dc32ece97 100644 --- a/examples/scroll.rs +++ b/examples/scroll.rs @@ -15,6 +15,7 @@ use rand::SeedableRng; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("scroll"); // view_process::run_same_process(app_main); diff --git a/examples/shortcut.rs b/examples/shortcut.rs index 3f2e80ba0..0b9e963c4 100644 --- a/examples/shortcut.rs +++ b/examples/shortcut.rs @@ -9,6 +9,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("shortcuts"); diff --git a/examples/text.rs b/examples/text.rs index d8d2e3eaf..a4a861bab 100644 --- a/examples/text.rs +++ b/examples/text.rs @@ -32,6 +32,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); //let rec = examples_util::record_profile("text"); diff --git a/examples/transform.rs b/examples/transform.rs index d0b2dde42..bcf5288bb 100644 --- a/examples/transform.rs +++ b/examples/transform.rs @@ -21,6 +21,7 @@ use zng::view_process::prebuilt as view_process; fn main() { examples_util::print_info(); view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("transform"); diff --git a/examples/window.rs b/examples/window.rs index 93b3fb2f4..5fdfe14cb 100644 --- a/examples/window.rs +++ b/examples/window.rs @@ -29,6 +29,7 @@ use zng::view_process::default as view_process; fn main() { examples_util::print_info(); // view_process::init(); + zng::app::crash_handler::init_debug(); // let rec = examples_util::record_profile("window");