I'm happy to announce libunwind-1.0. This is the result of more than two years of development by many people on multiple architectures and operating systems.
Linux (x64 and ARM) are well supported. You're advised to use a recent toolchain (gcc-4.5+), so the compiler generates unwind information for every instruction it emits. A recent version of glibc (as in released in the last two years) would also improve the chances that unwinding works well. Features ======= ** Fast unwind (rbp, rsp, rip only) on x86_64 with a fallback to slow code path (Lassi Tuura) ** Improved local and remote unwinding on ARM (Ken Werner) ** Testing, stability and many fixes on x86 (Paul Pluzhnikov) ** FreeBSD port and clean separation of OS specific bits (Konstantin Belousov) Performance =========== On a 1.6 GHz Atom: Full unwind: ./Lperf-simple unw_getcontext : cold avg= 329.018 nsec, warm avg= 169.277 nsec unw_init_local : cold avg= 538.826 nsec, warm avg= 88.215 nsec no cache : unw_step : 1st= 6273.108 min= 4631.168 avg= 4713.607 nsec global cache : unw_step : 1st= 1689.173 min= 1234.828 avg= 1261.078 nsec per-thread cache: unw_step : 1st= 962.671 min= 443.099 avg= 449.955 nsec Fast unwind (only RIP - you don't get to see arguments): ./Lperf-trace unw_getcontext : cold avg= 329.018 nsec, warm avg= 169.277 nsec unw_init_local : cold avg= 519.753 nsec, warm avg= 88.215 nsec no cache : unw_step : 1st= 8576.321 min= 56.231 avg= 60.247 nsec global cache : unw_step : 1st= 321.640 min= 56.231 avg= 59.303 nsec per-thread cache: unw_step : 1st= 206.929 min= 56.231 avg= 59.065 nsec Challenges ========= dl_iterate_phdr() is not async signal safe. This continues to be a problem in large scale deployments. Shouldn't be a problem for one-off profiling, debugging scenarios. Who uses libunwind ================ * google-perftools (cpu and heap profiling) * jemalloc (heap profiling) * poor man's profiler (http://poormansprofiler.org/, https://github.com/knielsen/knielsen-pmp) and probably a number of other use cases I don't know about. Without further ado: http://download.savannah.gnu.org/releases/libunwind/libunwind-1.0.tar.gz -Arun _______________________________________________ Libunwind-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/libunwind-devel
