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)
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users