diff --git a/voxygen/src/main.rs b/voxygen/src/main.rs index a7a911580f..9966a8d9d0 100644 --- a/voxygen/src/main.rs +++ b/voxygen/src/main.rs @@ -101,6 +101,18 @@ fn main() { let settings_clone = settings.clone(); let default_hook = panic::take_hook(); panic::set_hook(Box::new(move |panic_info| { + let panic_info_payload = panic_info.payload(); + let payload_string = panic_info_payload.downcast_ref::<String>(); + let reason = match payload_string { + Some(s) => &s, + None => { + let payload_str = panic_info_payload.downcast_ref::<&str>(); + match payload_str { + Some(st) => st, + None => "Payload is not a string", + } + } + }; let msg = format!(" \ A critical error has occured and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. @@ -122,7 +134,8 @@ Voxygen has logged information about the problem (including this message) to the The information below is intended for developers and testers. -{:?}", settings_clone.log.file, panic_info); +Panic Payload: {:?} +PanicInfo: {:?}", settings_clone.log.file, reason, panic_info); log::error!("VOXYGEN HAS PANICKED\n\n{}", msg);