# 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/std/src/../../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/std/src/../../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
