# Triggered by running bin/backtrace_request in fuchsia-pkg://fuchsia.com/debug_agent_helpers.
# Captured by `fx log --raw`.
[00169.289073][1][2][klog] INFO: <== BACKTRACE REQUEST: process foo[41906] thread initial-thread[41908]
...
[00169.290438][1][2][klog] INFO: [[[ELF module #0x0 "libunwind.so.1" BuildID=7b0d4cebd9c3618d 0x18f8b1e1000]]]
[00169.290502][1][2][klog] INFO: [[[ELF module #0x1 "libc++.so.2" BuildID=7cb4c1ab4a2c73b2 0x22f033e8000]]]
[00169.290559][1][2][klog] INFO: [[[ELF module #0x2 "libc++abi.so.1" BuildID=1820e427d1a18a0b 0x284e89ba000]]]
[00169.290657][1][2][klog] INFO: [[[ELF module #0x3 "libfdio.so" BuildID=f60992baff92044c 0x2adad843000]]]
[00169.290699][1][2][klog] INFO: [[[ELF module #0x4 "<VMO#41864=backtrace_request>" BuildID=6a4390753b1e5930 0x35ff4da6000]]]
[00169.290759][1][2][klog] INFO: [[[ELF module #0x5 "libc.so" BuildID=8ce60b04bdfd0610 0x800edd4b4000]]]
[00169.290808][1][2][klog] INFO: [[[ELF module #0x6 "libzircon.so" BuildID=b60aa30791277c5b 0x839a11850000]]]
[00169.291005][1][2][klog] INFO:    #1.1  0x0000035ff4da72e4 in backtrace_request() ../../zircon/system/ulib/backtrace-request/include/lib/backtrace-request/backtrace-request.h:30 <<VMO#41864=backtrace_request>>+0x12e4 sp 0x98f7876e00
[00169.291005][1][2][klog] INFO:    #1    0x0000035ff4da72e4 in main() ../../src/developer/debug/debug_agent/test_data/backtrace_request.cc:60 <<VMO#41864=backtrace_request>>+0x12e4 sp 0x98f7876e00
[00169.291169][1][2][klog] INFO:    #2    0x0000800edd510dfc in start_main(const start_params*) ../../zircon/third_party/ulib/musl/src/env/__libc_start_main.c:112 <libc.so>+0x5cdfc sp 0x98f7876e90
[00169.291493][1][2][klog] INFO:    #3    0x0000800edd51100c 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 sp 0x98f7877000
[00169.291735][1][2][klog] INFO:    #4    0x0000035ff4da7014 in _start(zx_handle_t) ../../zircon/system/ulib/c/Scrt1.cc:7 <<VMO#41864=backtrace_request>>+0x1014 sp 0x802bf21ceff0
[00169.291920][1][2][klog] INFO: <== process foo[41906] thread pthread_t:0x120d6b36000[41975]
...
[00169.293424][1][2][klog] INFO: [[[ELF module #0x0 "libunwind.so.1" BuildID=7b0d4cebd9c3618d 0x18f8b1e1000]]]
[00169.293489][1][2][klog] INFO: [[[ELF module #0x1 "libc++.so.2" BuildID=7cb4c1ab4a2c73b2 0x22f033e8000]]]
[00169.293545][1][2][klog] INFO: [[[ELF module #0x2 "libc++abi.so.1" BuildID=1820e427d1a18a0b 0x284e89ba000]]]
[00169.293603][1][2][klog] INFO: [[[ELF module #0x3 "libfdio.so" BuildID=f60992baff92044c 0x2adad843000]]]
[00169.293639][1][2][klog] INFO: [[[ELF module #0x4 "<VMO#41864=backtrace_request>" BuildID=6a4390753b1e5930 0x35ff4da6000]]]
[00169.293687][1][2][klog] INFO: [[[ELF module #0x5 "libc.so" BuildID=8ce60b04bdfd0610 0x800edd4b4000]]]
[00169.293730][1][2][klog] INFO: [[[ELF module #0x6 "libzircon.so" BuildID=b60aa30791277c5b 0x839a11850000]]]
[00169.293921][1][2][klog] INFO:    #1    0x0000839a11858120 in gen/vdso/include/lib/syscalls/syscalls.inc:493 <libzircon.so>+0x8120 sp 0x1643828ff70
[00169.294059][1][2][klog] INFO:    #2    0x0000839a118570ec in _zx_object_wait_one(zx_handle_t, zx_signals_t, zx_time_t, zx_signals_t*) gen/vdso/include/lib/syscalls/syscalls.inc:493 <libzircon.so>+0x70ec sp 0x1643828ff70
[00169.294176][1][2][klog] INFO:    #3.1  0x0000035ff4da7414 in zx::object<zx::event>::wait_one(const zx::object<zx::event>*, zx_signals_t, zx::time, zx_signals_t*) ../../zircon/system/ulib/zx/include/lib/zx/object.h:137 <<VMO#41864=backtrace_request>>+0x1414 sp 0x1643828ffa0
[00169.294176][1][2][klog] INFO:    #3    0x0000035ff4da7414 in $anon::SomeDeepStack(const zx::event*, const zx::event*, int, int) ../../src/developer/debug/debug_agent/test_data/backtrace_request.cc:24 <<VMO#41864=backtrace_request>>+0x1414 sp 0x1643828ffa0
[00169.294289][1][2][klog] INFO:    #4.2  0x0000035ff4da7460 in std::__2::__invoke<void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int>(void (*)(const zx::event*, const zx::event*, int, int)&&, zx::event*&&, zx::event*&&, int&&, int&&) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/type_traits:3899 <<VMO#41864=backtrace_request>>+0x1460 sp 0x1643828ffc0
[00169.294289][1][2][klog] INFO:    #4.1  0x0000035ff4da7460 in std::__2::__thread_execute<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct>>, void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int, 2, 3, 4, 5>(std::__2::tuple<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct> >, void (*)(const zx::event *, const zx::event *, int, int), zx::event *, zx::event *, int, int>&, std::__2::__tuple_indices<2, 3, 4, 5>) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/thread:280 <<VMO#41864=backtrace_request>>+0x1460 sp 0x1643828ffc0
[00169.294289][1][2][klog] INFO:    #4    0x0000035ff4da7460 in std::__2::__thread_proxy<std::__2::tuple<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct>>, void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int>>(void*) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/thread:291 <<VMO#41864=backtrace_request>>+0x1460 sp 0x1643828ffc0
[00169.294373][1][2][klog] INFO:    #5    0x0000800edd50cbe0 in start_pthread(void*) ../../zircon/third_party/ulib/musl/pthread/pthread_create.c:31 <libc.so>+0x58be0 sp 0x1643828ffd0
[00169.294645][1][2][klog] INFO:    #6    0x0000800edd550710 in thread_trampoline(uintptr_t, uintptr_t) ../../zircon/system/ulib/runtime/thread.c:93 <libc.so>+0x9c710 sp 0x1643828ffe0
[00169.294932][1][2][klog] INFO: <== process foo[41906] thread pthread_t:0x14cd5c9e000[41981]
...
[00169.296413][1][2][klog] INFO: [[[ELF module #0x0 "libunwind.so.1" BuildID=7b0d4cebd9c3618d 0x18f8b1e1000]]]
[00169.296474][1][2][klog] INFO: [[[ELF module #0x1 "libc++.so.2" BuildID=7cb4c1ab4a2c73b2 0x22f033e8000]]]
[00169.296533][1][2][klog] INFO: [[[ELF module #0x2 "libc++abi.so.1" BuildID=1820e427d1a18a0b 0x284e89ba000]]]
[00169.296590][1][2][klog] INFO: [[[ELF module #0x3 "libfdio.so" BuildID=f60992baff92044c 0x2adad843000]]]
[00169.296627][1][2][klog] INFO: [[[ELF module #0x4 "<VMO#41864=backtrace_request>" BuildID=6a4390753b1e5930 0x35ff4da6000]]]
[00169.296680][1][2][klog] INFO: [[[ELF module #0x5 "libc.so" BuildID=8ce60b04bdfd0610 0x800edd4b4000]]]
[00169.296714][1][2][klog] INFO: [[[ELF module #0x6 "libzircon.so" BuildID=b60aa30791277c5b 0x839a11850000]]]
[00169.296906][1][2][klog] INFO:    #1    0x0000839a11858120 in gen/vdso/include/lib/syscalls/syscalls.inc:493 <libzircon.so>+0x8120 sp 0x57cd9ebf70
[00169.297040][1][2][klog] INFO:    #2    0x0000839a118570ec in _zx_object_wait_one(zx_handle_t, zx_signals_t, zx_time_t, zx_signals_t*) gen/vdso/include/lib/syscalls/syscalls.inc:493 <libzircon.so>+0x70ec sp 0x57cd9ebf70
[00169.297152][1][2][klog] INFO:    #3.1  0x0000035ff4da7414 in zx::object<zx::event>::wait_one(const zx::object<zx::event>*, zx_signals_t, zx::time, zx_signals_t*) ../../zircon/system/ulib/zx/include/lib/zx/object.h:137 <<VMO#41864=backtrace_request>>+0x1414 sp 0x57cd9ebfa0
[00169.297152][1][2][klog] INFO:    #3    0x0000035ff4da7414 in $anon::SomeDeepStack(const zx::event*, const zx::event*, int, int) ../../src/developer/debug/debug_agent/test_data/backtrace_request.cc:24 <<VMO#41864=backtrace_request>>+0x1414 sp 0x57cd9ebfa0
[00169.297264][1][2][klog] INFO:    #4.2  0x0000035ff4da7460 in std::__2::__invoke<void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int>(void (*)(const zx::event*, const zx::event*, int, int)&&, zx::event*&&, zx::event*&&, int&&, int&&) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/type_traits:3899 <<VMO#41864=backtrace_request>>+0x1460 sp 0x57cd9ebfc0
[00169.297264][1][2][klog] INFO:    #4.1  0x0000035ff4da7460 in std::__2::__thread_execute<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct>>, void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int, 2, 3, 4, 5>(std::__2::tuple<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct> >, void (*)(const zx::event *, const zx::event *, int, int), zx::event *, zx::event *, int, int>&, std::__2::__tuple_indices<2, 3, 4, 5>) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/thread:280 <<VMO#41864=backtrace_request>>+0x1460 sp 0x57cd9ebfc0
[00169.297264][1][2][klog] INFO:    #4    0x0000035ff4da7460 in std::__2::__thread_proxy<std::__2::tuple<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct>>, void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int>>(void*) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/thread:291 <<VMO#41864=backtrace_request>>+0x1460 sp 0x57cd9ebfc0
[00169.297349][1][2][klog] INFO:    #5    0x0000800edd50cbe0 in start_pthread(void*) ../../zircon/third_party/ulib/musl/pthread/pthread_create.c:31 <libc.so>+0x58be0 sp 0x57cd9ebfd0
[00169.297621][1][2][klog] INFO:    #6    0x0000800edd550710 in thread_trampoline(uintptr_t, uintptr_t) ../../zircon/system/ulib/runtime/thread.c:93 <libc.so>+0x9c710 sp 0x57cd9ebfe0
[00169.297911][1][2][klog] INFO: <== process foo[41906] thread pthread_t:0x2075d277000[41987]
...
[00169.299395][1][2][klog] INFO: [[[ELF module #0x0 "libunwind.so.1" BuildID=7b0d4cebd9c3618d 0x18f8b1e1000]]]
[00169.299471][1][2][klog] INFO: [[[ELF module #0x1 "libc++.so.2" BuildID=7cb4c1ab4a2c73b2 0x22f033e8000]]]
[00169.299520][1][2][klog] INFO: [[[ELF module #0x2 "libc++abi.so.1" BuildID=1820e427d1a18a0b 0x284e89ba000]]]
[00169.299579][1][2][klog] INFO: [[[ELF module #0x3 "libfdio.so" BuildID=f60992baff92044c 0x2adad843000]]]
[00169.299613][1][2][klog] INFO: [[[ELF module #0x4 "<VMO#41864=backtrace_request>" BuildID=6a4390753b1e5930 0x35ff4da6000]]]
[00169.299660][1][2][klog] INFO: [[[ELF module #0x5 "libc.so" BuildID=8ce60b04bdfd0610 0x800edd4b4000]]]
[00169.299690][1][2][klog] INFO: [[[ELF module #0x6 "libzircon.so" BuildID=b60aa30791277c5b 0x839a11850000]]]
[00169.299888][1][2][klog] INFO:    #1    0x0000839a11858120 in gen/vdso/include/lib/syscalls/syscalls.inc:493 <libzircon.so>+0x8120 sp 0x19dc512af70
[00169.300019][1][2][klog] INFO:    #2    0x0000839a118570ec in _zx_object_wait_one(zx_handle_t, zx_signals_t, zx_time_t, zx_signals_t*) gen/vdso/include/lib/syscalls/syscalls.inc:493 <libzircon.so>+0x70ec sp 0x19dc512af70
[00169.300136][1][2][klog] INFO:    #3.1  0x0000035ff4da7414 in zx::object<zx::event>::wait_one(const zx::object<zx::event>*, zx_signals_t, zx::time, zx_signals_t*) ../../zircon/system/ulib/zx/include/lib/zx/object.h:137 <<VMO#41864=backtrace_request>>+0x1414 sp 0x19dc512afa0
[00169.300136][1][2][klog] INFO:    #3    0x0000035ff4da7414 in $anon::SomeDeepStack(const zx::event*, const zx::event*, int, int) ../../src/developer/debug/debug_agent/test_data/backtrace_request.cc:24 <<VMO#41864=backtrace_request>>+0x1414 sp 0x19dc512afa0
[00169.300248][1][2][klog] INFO:    #4.2  0x0000035ff4da7460 in std::__2::__invoke<void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int>(void (*)(const zx::event*, const zx::event*, int, int)&&, zx::event*&&, zx::event*&&, int&&, int&&) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/type_traits:3899 <<VMO#41864=backtrace_request>>+0x1460 sp 0x19dc512afc0
[00169.300248][1][2][klog] INFO:    #4.1  0x0000035ff4da7460 in std::__2::__thread_execute<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct>>, void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int, 2, 3, 4, 5>(std::__2::tuple<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct> >, void (*)(const zx::event *, const zx::event *, int, int), zx::event *, zx::event *, int, int>&, std::__2::__tuple_indices<2, 3, 4, 5>) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/thread:280 <<VMO#41864=backtrace_request>>+0x1460 sp 0x19dc512afc0
[00169.300248][1][2][klog] INFO:    #4    0x0000035ff4da7460 in std::__2::__thread_proxy<std::__2::tuple<std::__2::unique_ptr<std::__2::__thread_struct, std::__2::default_delete<std::__2::__thread_struct>>, void(*)(const zx::event*, const zx::event*, int, int), zx::event*, zx::event*, int, int>>(void*) ../../prebuilt/third_party/clang/mac-x64/include/c++/v1/thread:291 <<VMO#41864=backtrace_request>>+0x1460 sp 0x19dc512afc0
[00169.300333][1][2][klog] INFO:    #5    0x0000800edd50cbe0 in start_pthread(void*) ../../zircon/third_party/ulib/musl/pthread/pthread_create.c:31 <libc.so>+0x58be0 sp 0x19dc512afd0
[00169.300605][1][2][klog] INFO:    #6    0x0000800edd550710 in thread_trampoline(uintptr_t, uintptr_t) ../../zircon/system/ulib/runtime/thread.c:93 <libc.so>+0x9c710 sp 0x19dc512afe0
