# 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
