Recent versions of Linux libc (later than 5.4.23) and glibc (2.x) include a malloc() implementation which is tunable via environment variables. When MALLOC_CHECK_ is set, a special (less efficient) implementation is used which is designed to be tolerant against simple errors, such as double calls of free() with the same argument, or overruns of a single byte (off-by-one bugs). When MALLOC_CHECK_ is set to 3, a diagnostic message is printed on stderr and the program is aborted. Setting the MALLOC_PERTURB_ environment variable causes the malloc functions in libc to return memory which has been wiped and clear memory when it is returned. Of course this does not affect calloc which always does clear the memory. The reason for this exercise is, of course, to find code which uses memory returned by malloc without initializing it and code which uses code after it is freed. valgrind can do this but it's costly to run. The MALLOC_PERTURB_ exchanges the ability to detect problems in 100% of the cases with speed. The byte value used to initialize values returned by malloc is the byte value of the environment value. The value used to clear memory is the bitwise inverse. Setting MALLOC_PERTURB_ to zero disables the feature. This technique can find hard to detect bugs. It is therefore suggested to always use this flag (at least temporarily) when testing out code or a new distribution. Signed-off-by: Elia Pinto <gitter.spiros@xxxxxxxxx> --- This the second reroll of the original patch. I redid the patch correcting the export command in a more portable way thanks to the Junio observation. t/test-lib.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/t/test-lib.sh b/t/test-lib.sh index 78c4286..6317ffc 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -93,6 +93,14 @@ export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME export EDITOR +# Add libc malloc_check and MALLOC_PERTURB test +MALLOC_CHECK_=3 +export MALLOC_CHECK_ +MALLOC_PERTURB_="$( expr \( $$ % 255 \) + 1)" +export MALLOC_PERTURB_ +# + + # Protect ourselves from common misconfiguration to export # CDPATH into the environment unset CDPATH -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html