Files

This test plays around with the "parallel-stacks" program that generates a PDF file
that contains a graph of threads, including their trace back.

Run the test program.

    $ cd /nas/erniep/Development/seer/tests/hellothreads2
    $ seergdb --project project.seer

After continuing and breaking at the first breakpoint that 'joins', run this command
in Seer's gdb command input.

    pipe thread apply all bt | python3 parallel-stacks.py

It will run the script and view the parallel-stacks pdf.


Parsed output from gdb from the 'pipe' command.


    $ python3 parallel-stacks.py -p 22900
    Thread 10
      level: 0, address: '0x00007f84094f0f05', function: 'clock_nanosleep@GLIBC_2.2.5', parameters: '', filename: '/lib64/libc.so.6'
      level: 1, address: '0x00007f8409503b13', function: 'nanosleep', parameters: '', filename: '/lib64/libc.so.6'
      level: 2, address: '0x00007f840951517a', function: 'sleep', parameters: '', filename: '/lib64/libc.so.6'
      level: 3, address: '0x0000562f5846609f', function: 'operator()', parameters: '__closure=0x562f8e11c1c8, x=3', filename: 'hellothreads2.cpp:55'
      level: 4, address: '0x0000562f584667ec', function: 'std::__invoke_impl<void, main()::<lambda(int)>, int>(std::__invoke_other, struct {...} &&)', parameters: '__f=...', filename: '/usr/include/c++/13/bits/invoke.h:61'
      level: 5, address: '0x0000562f58466785', function: 'std::__invoke<main()::<lambda(int)>, int>(struct {...} &&)', parameters: '__fn=...', filename: '/usr/include/c++/13/bits/invoke.h:96'
      level: 6, address: '0x0000562f584666f5', function: 'std::thread::_Invoker<std::tuple<main()::<lambda(int)>, int> >::_M_invoke<0, 1>(std::_Index_tuple<0, 1>)', parameters: 'this=0x562f8e11c1c8', filename: '/usr/include/c++/13/bits/std_thread.h:292'
      level: 7, address: '0x0000562f584666ae', function: 'std::thread::_Invoker<std::tuple<main()::<lambda(int)>, int> >::operator()(void)', parameters: 'this=0x562f8e11c1c8', filename: '/usr/include/c++/13/bits/std_thread.h:299'
      level: 8, address: '0x0000562f58466692', function: 'std::thread::_State_impl<std::thread::_Invoker<std::tuple<main()::<lambda(int)>, int> > >::_M_run(void)', parameters: 'this=0x562f8e11c1c0', filename: '/usr/include/c++/13/bits/std_thread.h:244'
      level: 9, address: '0x00007f84098e8964', function: '??', parameters: '', filename: '/usr/local/lib64/libstdc++.so.6'
      level: 10, address: '0x00007f84094a6f6c', function: 'start_thread', parameters: '', filename: '/lib64/libc.so.6'
      level: 11, address: '0x00007f840952e388', function: 'clone3', parameters: '', filename: '/lib64/libc.so.6'
    Thread 9
      level: 0, address: '0x00007f84094f0f05', function: 'clock_nanosleep@GLIBC_2.2.5', parameters: '', filename: '/lib64/libc.so.6'
      level: 1, address: '0x00007f8409503b13', function: 'nanosleep', parameters: '', filename: '/lib64/libc.so.6'
      level: 2, address: '0x00007f840951517a', function: 'sleep', parameters: '', filename: '/lib64/libc.so.6'
      level: 3, address: '0x0000562f584668fb', function: 'thread_obj::operator()', parameters: 'this=0x562f8e11c068, x=3', filename: 'hellothreads2.cpp:25'
      level: 4, address: '0x0000562f58467490', function: 'std::__invoke_impl<void, thread_obj, int>', parameters: '__f=...', filename: '/usr/include/c++/13/bits/invoke.h:61'
      level: 5, address: '0x0000562f5846738d', function: 'std::__invoke<thread_obj, int>', parameters: '__fn=...', filename: '/usr/include/c++/13/bits/invoke.h:96'
      level: 6, address: '0x0000562f584672b3', function: 'std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul>', parameters: 'this=0x562f8e11c068', filename: '/usr/include/c++/13/bits/std_thread.h:292'
      level: 7, address: '0x0000562f58467250', function: 'std::thread::_Invoker<std::tuple<thread_obj, int> >::operator()', parameters: 'this=0x562f8e11c068', filename: '/usr/include/c++/13/bits/std_thread.h:299'
      level: 8, address: '0x0000562f58467214', function: 'std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run', parameters: 'this=0x562f8e11c060', filename: '/usr/include/c++/13/bits/std_thread.h:244'
      level: 9, address: '0x00007f84098e8964', function: '??', parameters: '', filename: '/usr/local/lib64/libstdc++.so.6'
      level: 10, address: '0x00007f84094a6f6c', function: 'start_thread', parameters: '', filename: '/lib64/libc.so.6'
      level: 11, address: '0x00007f840952e388', function: 'clone3', parameters: '', filename: '/lib64/libc.so.6'

Output from '-thread-info' command doesn't cut it. Only the first frame.

    ^done,threads=[
                    {id="1",target-id="Thread 0x7ffff7e7d740 (LWP 23678)",name="hellothreads2",
                        frame={level="0",addr="0x00005555555551f6",func="main",args=[],file="hellothreads2.cpp",fullname="/nas/erniep/Development/seer/tests/hellothreads2/hellothreads2.cpp",line="64",arch="i386:x86-64"},state="stopped",core="1"},
                    {id="2",target-id="Thread 0x7ffff77ff6c0 (LWP 23681)",name="hellothreads2",
                        frame={level="0",addr="0x00007ffff78f0f05",func="clock_nanosleep@GLIBC_2.2.5",args=[],from="/lib64/libc.so.6",arch="i386:x86-64"},state="stopped",core="3"},

Output from 'thread apply all bt'

    thread apply all bt

    Thread 9 (Thread 0x7ffff3ff86c0 (LWP 24364) "hellothreads2"):
    #0  0x00007ffff78f0f05 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
    #1  0x00007ffff7903b13 in nanosleep () from /lib64/libc.so.6
    #2  0x00007ffff791517a in sleep () from /lib64/libc.so.6
    #3  0x00005555555558fb in thread_obj::operator() (this=0x55555556d068, x=3) at hellothreads2.cpp:25
    #4  0x0000555555556490 in std::__invoke_impl<void, thread_obj, int> (__f=...) at /usr/include/c++/13/bits/invoke.h:61
    #5  0x000055555555638d in std::__invoke<thread_obj, int> (__fn=...) at /usr/include/c++/13/bits/invoke.h:96
    #6  0x00005555555562b3 in std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul> (this=0x55555556d068) at /usr/include/c++/13/bits/std_thread.h:292
    #7  0x0000555555556250 in std::thread::_Invoker<std::tuple<thread_obj, int> >::operator() (this=0x55555556d068) at /usr/include/c++/13/bits/std_thread.h:299
    #8  0x0000555555556214 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run (this=0x55555556d060) at /usr/include/c++/13/bits/std_thread.h:244
    #9  0x00007ffff7ce8964 in ?? () from /usr/local/lib64/libstdc++.so.6
    #10 0x00007ffff78a6f6c in start_thread () from /lib64/libc.so.6
    #11 0x00007ffff792e388 in clone3 () from /lib64/libc.so.6

    Thread 8 (Thread 0x7ffff47f96c0 (LWP 24363) "hellothreads2"):
    #0  0x00007ffff78f0f05 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
    #1  0x00007ffff7903b13 in nanosleep () from /lib64/libc.so.6
    #2  0x00007ffff791517a in sleep () from /lib64/libc.so.6
    #3  0x00005555555558fb in thread_obj::operator() (this=0x55555556cf08, x=3) at hellothreads2.cpp:25
    #4  0x0000555555556490 in std::__invoke_impl<void, thread_obj, int> (__f=...) at /usr/include/c++/13/bits/invoke.h:61
    #5  0x000055555555638d in std::__invoke<thread_obj, int> (__fn=...) at /usr/include/c++/13/bits/invoke.h:96
    #6  0x00005555555562b3 in std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul> (this=0x55555556cf08) at /usr/include/c++/13/bits/std_thread.h:292
    #7  0x0000555555556250 in std::thread::_Invoker<std::tuple<thread_obj, int> >::operator() (this=0x55555556cf08) at /usr/include/c++/13/bits/std_thread.h:299
    #8  0x0000555555556214 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run (this=0x55555556cf00) at /usr/include/c++/13/bits/std_thread.h:244
    #9  0x00007ffff7ce8964 in ?? () from /usr/local/lib64/libstdc++.so.6
    #10 0x00007ffff78a6f6c in start_thread () from /lib64/libc.so.6
    #11 0x00007ffff792e388 in clone3 () from /lib64/libc.so.6

Output from 'frames-list'

    ^done,frames=[
                    {thread-id="10",target-id="(23294, 23305, 0)",name="hellothreads2",state="stopped",current="0",frames=[
                        {level="0",addr="0x7ffff78f0f05",func="clock_nanosleep@GLIBC_2.2.5",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="1",addr="0x7ffff7903b13",func="nanosleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="2",addr="0x7ffff791517a",func="sleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="3",addr="0x555555555089",func="operator()",arch="i386:x86-64",file="hellothreads2.cpp",fullname="/nas/erniep/Development/seer/tests/hellothreads2/hellothreads2.cpp",line="53",type="normal"},
                        {level="4",addr="0x5555555557ec",func="std::__invoke_impl<void, main()::<lambda(int)>, int>(std::__invoke_other, struct {...} &&)",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="61",type="normal"},
                        {level="5",addr="0x555555555785",func="std::__invoke<main()::<lambda(int)>, int>(struct {...} &&)",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="96",type="normal"},
                        {level="6",addr="0x5555555556f5",func="std::thread::_Invoker<std::tuple<main()::<lambda(int)>, int> >::_M_invoke<0, 1>(std::_Index_tuple<0, 1>)",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="292",type="normal"},
                        {level="7",addr="0x5555555556ae",func="std::thread::_Invoker<std::tuple<main()::<lambda(int)>, int> >::operator()(void)",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="299",type="normal"},
                        {level="8",addr="0x555555555692",func="std::thread::_State_impl<std::thread::_Invoker<std::tuple<main()::<lambda(int)>, int> > >::_M_run(void)",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="244",type="normal"},
                        {level="9",addr="0x7ffff7ce8964",func="??",arch="i386:x86-64",from="/usr/local/lib64/libstdc++.so.6",type="normal"},
                        {level="10",addr="0x7ffff78a6f6c",func="start_thread",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="11",addr="0x7ffff792e388",func="clone3",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"}]},
                    {thread-id="9",target-id="(23294, 23304, 0)",name="hellothreads2",state="stopped",current="0",frames=[
                        {level="0",addr="0x7ffff78f0f05",func="clock_nanosleep@GLIBC_2.2.5",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="1",addr="0x7ffff7903b13",func="nanosleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="2",addr="0x7ffff791517a",func="sleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="3",addr="0x5555555558fb",func="thread_obj::operator()",arch="i386:x86-64",file="hellothreads2.cpp",fullname="/nas/erniep/Development/seer/tests/hellothreads2/hellothreads2.cpp",line="25",type="normal"},
                        {level="4",addr="0x555555556490",func="std::__invoke_impl<void, thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="61",type="normal"},
                        {level="5",addr="0x55555555638d",func="std::__invoke<thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="96",type="normal"},
                        {level="6",addr="0x5555555562b3",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul>",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="292",type="normal"},
                        {level="7",addr="0x555555556250",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::operator()",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="299",type="normal"},
                        {level="8",addr="0x555555556214",func="std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="244",type="normal"},
                        {level="9",addr="0x7ffff7ce8964",func="??",arch="i386:x86-64",from="/usr/local/lib64/libstdc++.so.6",type="normal"},
                        {level="10",addr="0x7ffff78a6f6c",func="start_thread",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},
                        {level="11",addr="0x7ffff792e388",func="clone3",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"}]},
                    {thread-id="8",target-id="(23294, 23303, 0)",name="hellothreads2",state="stopped",current="0",frames=[{level="0",addr="0x7ffff78f0f05",func="clock_nanosleep@GLIBC_2.2.5",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="1",addr="0x7ffff7903b13",func="nanosleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="2",addr="0x7ffff791517a",func="sleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="3",addr="0x5555555558fb",func="thread_obj::operator()",arch="i386:x86-64",file="hellothreads2.cpp",fullname="/nas/erniep/Development/seer/tests/hellothreads2/hellothreads2.cpp",line="25",type="normal"},{level="4",addr="0x555555556490",func="std::__invoke_impl<void, thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="61",type="normal"},{level="5",addr="0x55555555638d",func="std::__invoke<thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="96",type="normal"},{level="6",addr="0x5555555562b3",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul>",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="292",type="normal"},{level="7",addr="0x555555556250",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::operator()",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="299",type="normal"},{level="8",addr="0x555555556214",func="std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="244",type="normal"},{level="9",addr="0x7ffff7ce8964",func="??",arch="i386:x86-64",from="/usr/local/lib64/libstdc++.so.6",type="normal"},{level="10",addr="0x7ffff78a6f6c",func="start_thread",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="11",addr="0x7ffff792e388",func="clone3",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"}]},
                    {thread-id="7",target-id="(23294, 23302, 0)",name="hellothreads2",state="stopped",current="0",frames=[{level="0",addr="0x7ffff78f0f05",func="clock_nanosleep@GLIBC_2.2.5",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="1",addr="0x7ffff7903b13",func="nanosleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="2",addr="0x7ffff791517a",func="sleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="3",addr="0x5555555558fb",func="thread_obj::operator()",arch="i386:x86-64",file="hellothreads2.cpp",fullname="/nas/erniep/Development/seer/tests/hellothreads2/hellothreads2.cpp",line="25",type="normal"},{level="4",addr="0x555555556490",func="std::__invoke_impl<void, thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="61",type="normal"},{level="5",addr="0x55555555638d",func="std::__invoke<thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="96",type="normal"},{level="6",addr="0x5555555562b3",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul>",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="292",type="normal"},{level="7",addr="0x555555556250",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::operator()",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="299",type="normal"},{level="8",addr="0x555555556214",func="std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="244",type="normal"},{level="9",addr="0x7ffff7ce8964",func="??",arch="i386:x86-64",from="/usr/local/lib64/libstdc++.so.6",type="normal"},{level="10",addr="0x7ffff78a6f6c",func="start_thread",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="11",addr="0x7ffff792e388",func="clone3",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"}]},
                    {thread-id="6",target-id="(23294, 23301, 0)",name="hellothreads2",state="stopped",current="0",frames=[{level="0",addr="0x7ffff78f0f05",func="clock_nanosleep@GLIBC_2.2.5",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="1",addr="0x7ffff7903b13",func="nanosleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="2",addr="0x7ffff791517a",func="sleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="3",addr="0x5555555558fb",func="thread_obj::operator()",arch="i386:x86-64",file="hellothreads2.cpp",fullname="/nas/erniep/Development/seer/tests/hellothreads2/hellothreads2.cpp",line="25",type="normal"},{level="4",addr="0x555555556490",func="std::__invoke_impl<void, thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="61",type="normal"},{level="5",addr="0x55555555638d",func="std::__invoke<thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="96",type="normal"},{level="6",addr="0x5555555562b3",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul>",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="292",type="normal"},{level="7",addr="0x555555556250",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::operator()",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="299",type="normal"},{level="8",addr="0x555555556214",func="std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="244",type="normal"},{level="9",addr="0x7ffff7ce8964",func="??",arch="i386:x86-64",from="/usr/local/lib64/libstdc++.so.6",type="normal"},{level="10",addr="0x7ffff78a6f6c",func="start_thread",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="11",addr="0x7ffff792e388",func="clone3",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"}]},
                    {thread-id="5",target-id="(23294, 23300, 0)",name="hellothreads2",state="stopped",current="0",frames=[{level="0",addr="0x7ffff78f0f05",func="clock_nanosleep@GLIBC_2.2.5",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="1",addr="0x7ffff7903b13",func="nanosleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="2",addr="0x7ffff791517a",func="sleep",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="3",addr="0x5555555558fb",func="thread_obj::operator()",arch="i386:x86-64",file="hellothreads2.cpp",fullname="/nas/erniep/Development/seer/tests/hellothreads2/hellothreads2.cpp",line="25",type="normal"},{level="4",addr="0x555555556490",func="std::__invoke_impl<void, thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="61",type="normal"},{level="5",addr="0x55555555638d",func="std::__invoke<thread_obj, int>",arch="i386:x86-64",file="/usr/include/c++/13/bits/invoke.h",fullname="/usr/include/c++/13/bits/invoke.h",line="96",type="normal"},{level="6",addr="0x5555555562b3",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::_M_invoke<0ul, 1ul>",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="292",type="normal"},{level="7",addr="0x555555556250",func="std::thread::_Invoker<std::tuple<thread_obj, int> >::operator()",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="299",type="normal"},{level="8",addr="0x555555556214",func="std::thread::_State_impl<std::thread::_Invoker<std::tuple<thread_obj, int> > >::_M_run",arch="i386:x86-64",file="/usr/include/c++/13/bits/std_thread.h",fullname="/usr/include/c++/13/bits/std_thread.h",line="244",type="normal"},{level="9",addr="0x7ffff7ce8964",func="??",arch="i386:x86-64",from="/usr/local/lib64/libstdc++.so.6",type="normal"},{level="10",addr="0x7ffff78a6f6c",func="start_thread",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"},{level="11",addr="0x7ffff792e388",func="clone3",arch="i386:x86-64",from="/lib64/libc.so.6",type="normal"}]},
                 ],
                 current_thread_id="1",
                 current_frame_level="0",
                 total_threads="10",
                 total_frames="109"