FreeBSD The Power to Serve

Valgrind - Numerous bugfixes and updates for 13.1 / 14.0

Contact: Paul Floyd <pjfloyd@wanadoo.fr>

A quite significant number of bug fixes have been made to Valgrind on FreeBSD over the past few months. In particular, the i386 version has largely 'caught up' with its bigger brother amd64.

The devel/valgrind-devel port has been bumped up to 3.20.0.g20220612,1 which includes all of the following changes. If you use Valgrind regularly please switch to valgrind-devel.

Here is a list of changes since the release of Valgrind 3.19.0 (which is the version available with the devel/valgrind port).

  • incorrect signal resumption if a signal arrives when Valgrind is saving the carry flag for a syscall

  • fixed reading DWARF debuginfo from PT_LOADs generated by lld post version 9, which splits the RW segment into two parts, this affects mainly shared libraries (.so files)

  • on i386 implement correctly the management of thread GDTs which was limiting applications to only ever creating 8192 threads

  • make the first page of the 'brk' invalid for addressing

  • analysis and cleanup of the regression test suite and in particular tweak the i386 leak tests to not detect possible leaks due to left over pointers in ECX.

  • make coredumps readable by lldb

  • improve the setting of errno by C allocating functions

  • fix building of Valgrind with llvm-devel (15.0.0)

For FreeBSD 13.1 / 14.0 there are

  • syscall wrappers for funlinkat, copy_file_range, swapoff, shm_open2

  • add K_INFO handling to fcntl

  • add handling for new auxv entries

  • added some default suppressions for DRD and Helgrind

There is now an initial version of vgdb invoker support - this allows vgdb to use ptrace to force valgrind to poll for gdb commands. This is not yet available in the ports versions.

That does not leave much in the way of outstanding issues. I expect that 14.0 and newer versions of llvm will keep on requiring support. Apart from that there is

  • some small problems with error messages getting the correct source information

  • better core dumps (low priority)

  • TLS (thread local storage) handling for Helgrind (difficult if not impossible)


Last modified on: September 11, 2022 by Maxim Konovalov