From cb9a3684450714945fd2d77a63d687237fdfff24 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Wed, 26 Feb 2014 15:48:26 -0300 Subject: [PATCH] Add configuration to help debug memory leaks --- .gitignore | 1 + .travis.yml | 2 +- CMakeLists.txt | 4 ++++ Makefile | 4 ++-- scripts/travis.sh | 7 +++++++ src/main.c | 1 + src/testdir/Makefile | 15 ++++++++------- 7 files changed, 24 insertions(+), 10 deletions(-) create mode 100755 scripts/travis.sh diff --git a/.gitignore b/.gitignore index a36e19fe97..128b1b1481 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ src/testdir/test.log src/testdir/test.ok src/testdir/*.failed src/testdir/X* +src/testdir/valgrind.* # local make targets local.mk diff --git a/.travis.yml b/.travis.yml index d1a0445925..cb54bbcc09 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,2 +1,2 @@ language: c -script: make cmake CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX=$PWD/dist" && make && make test > /dev/null 2>&1 && make install +script: ./scripts/travis.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 04df162f07..04b59acd28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,10 @@ else() set(DEBUG 0) endif() +if(DEFINED $ENV{VALGRIND_CHECK}) + add_definitions(-DEXITFREE) +endif() + # Modules used by platform auto-detection include(CheckLibraryExists) diff --git a/Makefile b/Makefile index 3aa82fa0bf..d724816e12 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,9 @@ -include local.mk -CMAKE_FLAGS := -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=.deps/usr -DLibUV_USE_STATIC=YES +CMAKE_FLAGS = -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=.deps/usr -DLibUV_USE_STATIC=YES # Extra CMake flags which extend the default set -CMAKE_EXTRA_FLAGS := +CMAKE_EXTRA_FLAGS = build/bin/nvim: deps ${MAKE} -C build diff --git a/scripts/travis.sh b/scripts/travis.sh new file mode 100755 index 0000000000..90e8082f86 --- /dev/null +++ b/scripts/travis.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +export VALGRIND_CHECK=1 +make cmake CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX=$PWD/dist" +make +make test > /dev/null 2>&1 +make install diff --git a/src/main.c b/src/main.c index c5d7d528cf..1c8f336d87 100644 --- a/src/main.c +++ b/src/main.c @@ -276,6 +276,7 @@ static char *(main_errors[]) = * (MSDOS). * Note that we may use mch_exit() before mch_init()! */ + malloc(10323); mch_init(); TIME_MSG("shell init"); diff --git a/src/testdir/Makefile b/src/testdir/Makefile index 16db2846c2..663abffff9 100644 --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -4,13 +4,6 @@ VIMPROG = ../../build/bin/nvim -# Uncomment this line to use valgrind for memory leaks and extra warnings. -# The output goes into a file "valgrind.testN" -# Vim should be compiled with EXITFREE to avoid false warnings. -# This will make testing about 10 times as slow. -# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --log-file=valgrind.$* - - SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ test7.out test8.out test9.out test10.out test11.out \ test12.out test13.out test14.out test15.out test17.out \ @@ -34,6 +27,14 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ SCRIPTS_GUI = test16.out +ifdef VALGRIND_CHECK +VALGRIND := valgrind --leak-check=yes --error-exitcode=1 --log-file=valgrind.$* +endif + +ifdef TESTNUM +SCRIPTS = test$(TESTNUM).out +endif + .SUFFIXES: .in .out nongui: nolog $(SCRIPTS) report