Skip to content

Releases: peadar/pstack

v2.7.2

03 Jul 11:27

Choose a tag to compare

Changes:

  • Improve behaviour of cache reader in the face of underlying IO errors.
    • if the start of the requested content from a cache reader is available, then present that, and just stop where the IO error occurrs, rather than erroring the entire "read()"
  • "--args" now indirects through references and pointers when printing function arguments
  • Clean up ReaderArray and its iterators to be more conformant to C++ iterator concept
  • Fix a bug in the --dump options that faulted due to previous FDE parsing optimisations.

v2.7.1

12 Jun 10:38

Choose a tag to compare

Changes:

  • Display signal trampoline function correctly on aarch64
    • there is no FDE for __kernel_rt_sigreturn in the aarch64 VDSO in some kernels, so just use its name as an indicator that it is a signal trampoline function
  • Fix calculation of "base" address for rangelists.
    • When there is no base address in the list, it should come from the compilation unit. The DWARF5 version was also ignoring the passed base address anyway. This fixes the detection of inlined subroutines for a number of cases.
  • Optimise search for FDEs.
    • FDEs are now kept sorted by the instruction address they cover, rather than the order they are present in eh_frame. They can therefore be binary searched, rather than linearly. Also, if the .eh_frame_hdr section is present, we don't parse them all up-front, but lazily populate the in-memory array from the already-sorted table in that section as we conduct the binary search. This can mean we decode just a handful of FDEs rather than thousands.
  • Remove some ill-considered changes to applying pcrel addressing in call frame information
    • this fixes problems decoding the VDSO on arm, where there is no PT_GNU_EH_FRAME segment

v2.6.1

09 May 17:34

Choose a tag to compare

Various bugfixes and featurettes, and improved C++ API

  • Allow fetching floating-point registers as well as general registers via the API
  • Include NT_PRPSINFO in ELF dump of a core.
  • Fix crash if dumping core files (via --elf-dump) if there's no NT_FILE note
  • Honour flags in ELF phdrs when getting the addressSpace() of a core files (C++ API)
  • Some clang-tidy cleanups
  • Allow "canal" to find 32-bit values on 64-bit systems, and vice versa. (Added --wordsize argument)
  • Fix options parser to deal with options with no short form
  • Performance improvements in ReaderArray.
    • This improves performance on some basic tests by a couple of percent.
    • Also brings performance of ReaderArray in line with Paulo's caching improvement in canal (it's basically the same thing, just applied generally), so we can use ReaderArray there now to get the same benefit.

v2.5.3

09 Apr 07:34

Choose a tag to compare

Maintenance release

  • Fixes for aarch64
    • Don't terminate DWARF unwinding without explicit signal. Prevents truncated stacktraces.
    • Don't fault if the process image has no VDSO (eg, generate from valgrind)
  • DWARF improvements
    • Implement DW_OP_piece
    • Implement displaying floating point arguments
    • Be more robust dealing with arguments that can't be printed
  • Fix clang compilation errors
  • Allow compilation against older glibc versions (where gettid syscall may not have a wrapper function)

v2.5.1

07 Mar 00:01

Choose a tag to compare

A couple of significant performance improvements:

1: Delay loading ELF files until we need to access their contents - previously they were loaded by virtue of being found in the process link map. Now we just remember their load address and name, and load as required.

2: More caching for reading data from files and processes- Internal mechanism for reading sequences of items now does read-ahead on 1kb of data.

  1. Improved caching for processing debug symbol tables

Some changes to cmakelists.txt to include pstack version number in the .so name, and to use standard linux install directories.

v2.4.7

26 Feb 15:20

Choose a tag to compare

Fix bugs stopping processes that are actively creating new threads.

v2.4.6

14 Nov 18:30

Choose a tag to compare

Bugfix release

v2.4.5

11 Oct 11:20

Choose a tag to compare

Constness fixes for some internal APIs; declare C++17 as the lowest supported version

v2.4.4

30 Sep 16:06

Choose a tag to compare

Deal with executable images with no section headers.

v2.4.3

21 Sep 15:09

Choose a tag to compare

Minor release to move code from pstack binary to procman library.