# This is the stdout of `fx shell run fuchsia-pkg://fuchsia.com/crasher#meta/rust_crasher.cmx`
thread 'main' panicked at 'I HAVE PANICKED', ../../src/developer/forensics/crasher/rust/src/main.rs:6:5
stack backtrace:
[[[ELF module #0x0 "" BuildID=e1c9115da8f4a732 0x75701d1000]]]
[[[ELF module #0x1 "libfdio.so" BuildID=f60992baff92044c 0x260ea9cc000]]]
[[[ELF module #0x2 "libstd-771befcd97ac0955.so" BuildID=69f7458ba652c884 0x34db40f8000]]]
[[[ELF module #0x3 "<vDSO>" BuildID=b60aa30791277c5b 0x82377173f000]]]
[[[ELF module #0x4 "libc.so" BuildID=8ce60b04bdfd0610 0x80e2c31bb000]]]
   #0.3  0x0000034db41abba4 in std::backtrace_rs::backtrace::libunwind::trace(core::ops::function::&mut FnMut<(&std::backtrace_rs::backtrace::Frame)>) library/backtrace/src/backtrace/libunwind.rs:96 <libstd-771befcd97ac0955.so>+0xb3ba4
   #0.2  0x0000034db41abba4 in std::backtrace_rs::backtrace::trace_unsynchronized<closure-1>(std::sys_common::backtrace::_print_fmt::closure-1) library/backtrace/src/backtrace/mod.rs:66 <libstd-771befcd97ac0955.so>+0xb3ba4
   #0.1  0x0000034db41abba4 in std::sys_common::backtrace::_print_fmt(core::fmt::Formatter*, std::backtrace_rs::print::PrintFmt) library/std/src/sys_common/backtrace.rs:79 <libstd-771befcd97ac0955.so>+0xb3ba4
   #0    0x0000034db41abba4 in std::sys_common::backtrace::_print::$({{impl}})::fmt(std::sys_common::backtrace::_print::DisplayBacktrace*, core::fmt::Formatter*) library/std/src/sys_common/backtrace.rs:58 <libstd-771befcd97ac0955.so>+0xb3ba4
   #1    0x0000034db4213d30 in core::fmt::write(core::fmt::&mut Write, core::fmt::Arguments) library/core/src/fmt/mod.rs:1117 <libstd-771befcd97ac0955.so>+0x11bd30
   #2    0x0000034db419e690 in std::io::Write::write_fmt<std::sys::unix::stdio::Stderr>(std::sys::unix::stdio::Stderr*, core::fmt::Arguments) library/std/src/io/mod.rs:1510 <libstd-771befcd97ac0955.so>+0xa6690
   #3.2  0x0000034db41afa1c in std::sys_common::backtrace::_print(std::io::&mut Write, std::backtrace_rs::print::PrintFmt) library/std/src/sys_common/backtrace.rs:61 <libstd-771befcd97ac0955.so>+0xb7a1c
   #3.1  0x0000034db41afa1c in std::sys_common::backtrace::print(std::io::&mut Write, std::backtrace_rs::print::PrintFmt) library/std/src/sys_common/backtrace.rs:48 <libstd-771befcd97ac0955.so>+0xb7a1c
   #3    0x0000034db41afa1c in λ(std::io::&mut Write) library/std/src/panicking.rs:200 <libstd-771befcd97ac0955.so>+0xb7a1c
   #4    0x0000034db41af738 in std::panicking::default_hook(core::panic::PanicInfo*) library/std/src/panicking.rs:219 <libstd-771befcd97ac0955.so>+0xb7738
   #5    0x0000034db41b01d8 in std::panicking::rust_panic_with_hook(core::panic::&mut BoxMeUp, core::option::Option<&core::fmt::Arguments>, core::panic::Location*) library/std/src/panicking.rs:569 <libstd-771befcd97ac0955.so>+0xb81d8
   #6    0x00000075701d2070 in λ() /b/s/w/ir/k/rust/library/std/src/panicking.rs:498 <>+0x1070
   #7    0x00000075701d2034 in std::sys_common::backtrace::__rust_end_short_backtrace<closure-0, !>(std::panicking::begin_panic::closure-0) /b/s/w/ir/k/rust/library/std/src/sys_common/backtrace.rs:153 <>+0x1034
   #8    0x00000075701d20a4 in std::panicking::begin_panic<&str>(&str) /b/s/w/ir/k/rust/library/std/src/panicking.rs:497 <>+0x10a4
   #9    0x00000075701d2150 in rust_crasher::main() ../../src/developer/forensics/crasher/rust/src/main.rs:6 <>+0x1150
   #10.1 0x00000075701d2040 in core::ops::function::FnOnce::call_once<fn(), ()>(void (*)(), ()) /b/s/w/ir/k/rust/library/core/src/ops/function.rs:233 <>+0x1040
   #10   0x00000075701d2040 in std::sys_common::backtrace::__rust_begin_short_backtrace<fn(), ()>(void (*)()) /b/s/w/ir/k/rust/library/std/src/sys_common/backtrace.rs:137 <>+0x1040
   #11   0x00000075701d21b0 in λ() /b/s/w/ir/k/rust/library/std/src/rt.rs:66 <>+0x11b0
   #12.4 0x0000034db41b03d8 in core::ops::function::impls::$({{impl}})::call_once<(), Fn<()>>(core::ops::function::&Fn<()>, ()) /b/s/w/ir/k/rust/library/core/src/ops/function.rs:265 <libstd-771befcd97ac0955.so>+0xb83d8
   #12.3 0x0000034db41b03d8 in std::panicking::try::do_call<&Fn<()>, i32>(u8*) library/std/src/panicking.rs:373 <libstd-771befcd97ac0955.so>+0xb83d8
   #12.2 0x0000034db41b03d8 in std::panicking::try<i32, &Fn<()>>(core::ops::function::&Fn<()>) library/std/src/panicking.rs:337 <libstd-771befcd97ac0955.so>+0xb83d8
   #12.1 0x0000034db41b03d8 in std::panic::catch_unwind<&Fn<()>, i32>(core::ops::function::&Fn<()>) library/std/src/panic.rs:394 <libstd-771befcd97ac0955.so>+0xb83d8
   #12   0x0000034db41b03d8 in std::rt::lang_start_internal(core::ops::function::&Fn<()>, isize, u8**) library/std/src/rt.rs:51 <libstd-771befcd97ac0955.so>+0xb83d8
   #13   0x00000075701d219c in std::rt::lang_start<()>(void (*)(), isize, u8**) /b/s/w/ir/k/rust/library/std/src/rt.rs:65 <>+0x119c
   #14   0x00000075701d2174 in main <>+0x1174
   #15   0x000080e2c3217dfc in start_main(const start_params*) ../../zircon/third_party/ulib/musl/src/env/__libc_start_main.c:112 <libc.so>+0x5cdfc
   #16   0x000080e2c321800c in __libc_start_main(zx_handle_t, int (*)(int, char**, char**)) ../../zircon/third_party/ulib/musl/src/env/__libc_start_main.c:164 <libc.so>+0x5d00c
   #17   0x00000075701d2014 in _start(zx_handle_t) ../../zircon/system/ulib/c/Scrt1.cc:7 <>+0x1014
