hotspot
hotspot copied to clipboard
investigate cpp-recursion unwind errors
perf and hotspot both fail to unwind many samples for the cpp-recursion example:
┌milian@agathebauer:~/projects/kdab/rnd/hotspot/build|master *>
└$ perf record --call-graph dwarf -c 1000000 ./tests/test-clients/cpp-recursion/cpp-recursion 40
fib(40) = 165580141
[ perf record: Woken up 40 times to write data ]
[ perf record: Captured and wrote 9.969 MB perf.data (1238 samples) ]
┌milian@agathebauer:~/projects/kdab/rnd/hotspot/build|master>
└$ perf script
cpp-recursion 3229 19478.124517: cycles:uppp:
bb40 _dl_relocate_object (/usr/lib/ld-2.26.so)
3f26 dl_main (/usr/lib/ld-2.26.so)
18af2 _dl_sysdep_start (/usr/lib/ld-2.26.so)
1df7 _dl_start (/usr/lib/ld-2.26.so)
f37 _start (/usr/lib/ld-2.26.so)
cpp-recursion 3229 19478.124904: cycles:uppp:
1295 fibonacci (/home/milian/projects/kdab/rnd/hotspot/build/tests/test-clients/cpp-recursion/cpp-recursion)
fffffffe [unknown] ([unknown])
cpp-recursion 3229 19478.125231: cycles:uppp:
12b0 fibonacci (/home/milian/projects/kdab/rnd/hotspot/build/tests/test-clients/cpp-recursion/cpp-recursion)
ffffffffffffffff [unknown] ([unknown])
cpp-recursion 3229 19478.125558: cycles:uppp:
12b0 fibonacci (/home/milian/projects/kdab/rnd/hotspot/build/tests/test-clients/cpp-recursion/cpp-recursion)
fffffffe [unknown] ([unknown])
We need to figure out what's going on here and find a solution. Note that this affects both, libunwind and libdw unwinders. Potentially an issue with the DWARF debug info, and/or tail-call optimizations or something like that?