Skip to content

Releases: peadar/pstack

v2.8.3

14 Oct 21:12
Compare
Choose a tag to compare

BUGFIX: Fix frame-pointer fallback unwinding for i386.

v2.8.2

01 Oct 11:16
Compare
Choose a tag to compare

Minor performance improvements, and improved details in implementation of Process::addressSpace

v2.8.1

13 Jul 22:31
Compare
Choose a tag to compare

Avoid using ino_t, as its size is dependent on _FILE_OFFSET_BITS.

v2.8

13 Jul 21:09
Compare
Choose a tag to compare

Fixes for argument printing, and decoding /proc//maps

v2.7.2

03 Jul 11:27
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
Choose a tag to compare

Fix bugs stopping processes that are actively creating new threads.