[Valgrind-users] Valgrind-3.27.0 is available | Valgrind, an open-source memory debugger

7 min read Original article ↗

SourceForge logo

Menu

From: Mark W. <ma...@kl...> - 2026-04-21 00:32:48

We are pleased to announce a new release of Valgrind, version 3.27.0,
available from https://valgrind.org/downloads/current.html

This release brings two new options for helgrind (--show-events and
--track-destroy), several new SSE4.1 instruction for x86 (32 bit),
support for new s390x z/Architecture features from the 15th edition,
integrated binutils objdump for s390x disassembly, support for new
linux syscalls, address space manager support for tracking linux
kernel lightweight guard pages, freebsd support for 16.0-CURRENT,
macOS supported up to version 13 Ventura (Intel only), and new client
requests macros (VALGRIND_REPLACES_MALLOC and VALGRIND_GET_TOOLNAME).

See the release notes below for details of the changes.

Our thanks to all those who contribute to Valgrind's development.
This release represents a great deal of time, energy and effort on the
part of many people. It was a busy release, with 494 commits
by 12 people, fixing 62 bugs.

Happy and productive debugging and profiling,

-- The Valgrind Developers

Release 3.27.0 (20 Apr 2026)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux,
PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux,
MIPS64/Linux, RISCV64/Linux, ARM/Android, ARM64/Android, MIPS32/Android,
X86/Android, X86/Solaris, AMD64/Solaris, X86/macOS, AMD64/macOS. 
X86/FreeBSD, AMD64/FreeBSD and ARM64/FreeBSD. There is preliminary support
for nanoMIPS/Linux. macOS is supported up to version 13 Ventura (amd64 only).

* ==================== CORE CHANGES ===================

* There are two new client requests

  - VALGRIND_REPLACES_MALLOC Returns 1 if the tool replaces malloc
    (e.g., memcheck).  Returns 0 if the tool does not replace malloc
    (e.g., cachegrind and callgrind) or if the executable is not
    running under VALGRIND.

  - VALGRIND_GET_TOOLNAME Get the running tool name as a string. Takes
    two arguments, an input buffer pointer and the length of that
    buffer. Returns the required length (including terminating nul)
    for the tool name. Returns 0 and the contents supplied buffer are
    not modified if not running under Valgrind.

  See also the full description in the valgrind.h header file or the
  in The Client Request mechanism section of the Valgrind User Manual.

* linux lightweight guard pages (madvise MADV_GUARD_INSTALL) supported

  glibc 2.42+ (with linux 6.13+) uses MADV_GUARD_INSTALL to setup
  stack guard pages. These lightweight guard pages are now supported
  under valgrind. By default, Valgrind can handle to up to 500 madvise
  guard pages. With thread heavy workloads the default value might not
  be sufficient. Use --max-guard-pages=N to provide a different limit.
  If --max-guard-pages is not set explicitly, then it will default to
  the --max-threads setting.

* --num-callers now has a minimum value of 2.

  This is a breaking change. See
  https://bugs.kde.org/show_bug.cgi?id=515183#c13
  for full details.

* ================== PLATFORM CHANGES =================

* x86: Support for SSE4.1 instructions has been ported from AMD64 to
  (32bit) x86. This is ongoing work. Currently the following SSE4.1
  instructions are supported BLENDPD BLENDPS BLENDVPD BLENDVPS
  MOVNTDQA MPSADBW PBLENDVB PBLENDW PCMPEQQ PINSRD PMAXSB PMAXSD
  PMAXUD PMAXUW PMINSB PMINSD PMINUD PMINUW PMULLD PTEST.
  Bug #518222 tracks further progress.

* s390x: Machine models older than z196 are no longer supported.

* s390x: Support new z/Architecture features from the 15th edition.  In
  particular this enables running binaries compiled with `-march=arch15'
  or `-march=z17' and exploiting the new MSA extensions 10-13.

* Support for the following macOS versions has been added
  10.13 High Sierra (bug fixes)
  10.14 Mojave
  10.15 Catalina
  11.0  Big Sur (Intel only)
  12.0  Monterey (Intel only)
  13.0  Ventura (Intel only, preliminary)

* The Linux Test Project (LTP) v20260130 was integrated. New linux
  syscall wrappers for file_getattr, file_setattr, lsm_get_self_attr,
  lsm_set_self_attr, lsm_list_modules were added.

* ==================== TOOL CHANGES ===================

* Helgrind:

  - New debug option --show-events=0|1|2. Controls tracing of internal
    Helgrind synchronization, threading and memory events. At level 1,
    Helgrind prints a trace of its synchronization, threading and memory
    events. At level 2, additional memory events are also traced. The
    default value of 0 disables tracing.

  - New option --track-destroy=no|yes|all. Checks for missing
    pthread_mutex_destroy and pthread_rwlock_destroy calls. With yes,
    Helgrind warns when pthread_mutex_init or pthread_rwlock_init is called
    on the address of a live (undestroyed) lock. With all, Helgrind also
    reports undestroyed locks at process exit. --track-destroy does not track
    locks that use static initializers.

* ==================== FIXED BUGS ====================

The following bugs have been fixed or resolved.  Note that "n-i-bz"
stands for "not in bugzilla" -- that is, a bug that was reported to us
but never got a bugzilla entry.  We encourage you to file bugs in
bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather
than mailing the developers (or mailing lists) directly -- bugs that
are not entered into bugzilla tend to get forgotten about or ignored.

126256  (fnop) vex x86->IR: unhandled instruction bytes: 0xD9 0xD0 0x31 0xC0
228343  none/tests/darwin/bug228343 fails on OS X
233298  MEMPOOL_FREE not reflected in heap summary
253436  vex amd64->IR: unhandled instruction bytes: 0xF2 0xA6 (repne cmps)
258140  Valgrind on OS X always reports some memory "still reachable"
390754  unhandled amd64-darwin syscall: unix:216 (open_dprotected_np)
406674  False positive when reading bitfield value on code compiled with
        clang 7.0
413369  unhandled amd64-darwin syscall: unix:151 (getpgid)
413410  unhandled amd64-darwin syscall: mach:50 (on macOS 10.15)
487055  memcheck/tests/x86-linux/scalar fails running in Docker
503238  s390x: Support miscellaneous-instruction-extensions facility 4
503239  s390x: Support vector-enhancements facility 3
503240  s390x: Support MSA extensions 10, 11, and 12
509562  s390x: Define minimum required machine model
510416  Missing syswraps for file_getattr and file_setattr
510563  Add missing syswraps for lsm_get_self_attr and lsm_set_self_attr
510864  Add SSE4.1 PMAXSD and PMINSD instructions support for 32-bit x86
511329  Darwin and FreeBSD: Move setting of carry flag out of
        ML_(do_syscall_for_client_WRK)
511461  Darwin 17 (MacOS X 10.13) memcheck issues
511713  Refactor syscall argument handling
511717  gdbserver (valgrind_read_memory) the 'impossible' happened:
        Killed by fatal signal (SIGSEGV)
511972  valgrind-3.26.0 tests fail to build on upcomig gcc-16:
        unrecognized command-line option
        '-Wno-alloc-size-larger-than=18446744073709551615'
512030  s390x: bfp-convert testcase fails
512037  malloc trace does not print free size or alignment
512291  Valgrind on Solaris should drop support for long gone /dev/crypto
        framework
512571  regtest problems with darwin dsymutil
512873  Add SSE4.1 min/max instructions for x86 32 bit
513257  Add missing syswraps for lsm_list_modules
513522  m_libcassert.c: 'ordered comparison of pointer with integer zero'
        compiler warning
513475  Add SSE4.1 PMULLD instruction for x86 32 bit
513598  Helgrind should detect locks without pthread_{rwlock,mutex}_destroy
        being called - Assertion 'lk->kind == LK_rdwr' failed.
514094  readlink("/proc/self/exe") overwrites buffer beyond its return value
514206  Assertion '!sr_isError(sr)' failed - mmap fd points to an open
        descriptor to a PCI device
514297  Track madvise MADV_GUARD_INSTALL in address space manager
514343  Add a valgrind.h macro VALGRIND_REPLACES_MALLOC
514596  Add SSE4.1 BLENDPD instruction for x86 32 bit
514613  Unclosed leak_summary/still_reachable tag in xml output
514659  ltp 20250930 vs linux 6.18.3 doesn't build
514762  Many "Bad file descriptor" messages when using --track-fds=yes and
        -d on systems without /proc
515183  Error occurred while executing the command
        `valgrind --num-callers=1 ./hello_world`
515265  Add SSE4.1 BLENDPS and PBLENDW instructions for x86 32 bit
516223  Add SSE4.1 PBLENDVB, BLENDVPS and BLENDVPD
        instructions for x86 32 bit
515612  Sanity check VG_(realpath) and VG_(readlink) return values
515731  Distinguish between realloc functions in realloc size 0 error messages
515810  Update the LTP version in valgrind testsuite to 20260130
515992  Add FreeBSD /proc virtualisation for cmdline and file
516090  Regression : Linux FreeBSD and Darwin: refactor *at syscall dirfd checks
516225  Add MOVNTDQA SSE4.1 support for x86
516289  illumos lsframe2 regtest fails
516748  Incorrect use of SET_STATUS_Failure for syscall wrappers that return
        error codes rather than -1 on error
517455  Add PCMPEQQ SSE4.1 support for x86
517697  Implement CLRSSONSTACK and SETUJMPBUF handling on Solaris.
517748  Add ability to redirect global functions to Darwin
517840  Add PTEST SSE4.1 support for x86
518216  Add SSE4.1 MPSADBW instruction support for x86 32 bit
518076  FreeBSD: add syscall wrapper for renameat2
518078  Configure should accept names for GDB other than "gdb"
518159  pth_once issues on Darwin
518482  FreeBSD: assert in parse_procselfmaps when built with GNU binutils
518609  Setting double verbose interferes with symbol loading (FreeBSD 16)
518778  Valgrind LTP testsuite fails to compile on Fedora 44+
518951  LTP testcase fsconfig02 fails under Valgrind

To see details of a given bug, visit
  https://bugs.kde.org/show_bug.cgi?id=XXXXXX
where XXXXXX is the bug number as listed above.

(3.27.0.RC1: 13 Apr 2026)
(3.27.0.RC2: 17 Apr 2026)



View entire thread

MongoDB Logo MongoDB