# Triggered by running bin/backtrace_request in fuchsia-pkg://fuchsia.com/debug_agent_tests.
# 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/bin/../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/bin/../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/bin/../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/bin/../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/bin/../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/bin/../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/bin/../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/bin/../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/bin/../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
