Valgrind is a tool that can detect memory leaks and invalid attempts to access memory, or perform actions that depend on the contents of uninitialised memory.
When running ASCEND through valgrind, the following approach is suggested:
# enter your working directory cd ~/ascend # build the test suite, plus libascend (dependency) scons -j2 test # you might also need to build the solvers as another step scons -j2 solvers # set up your runtime environment export ASCENDLIBRARY=~/ascend/models export LD_LIBRARY_PATH=~/ascend:/usr/lib/coin:/usr/lib/coin/ThirdParty # run the test suite through valgrind in 'memcheck' mode: valgrind --suppressions=tools/valgrind/suppressions --tool=memcheck --leak-check=full --show-reachable=yes test/test TESTNAME
where in the above, TESTNAME is replaced by a valid test case or test suite, use test/test -l and test/test -tSUITENAME to list available options.
Valgrind can also be used with Python-based scripts, but you will need to be prepared to add suppressions for a large number of warnings/errors that Valgrind detects from Python itself.
As Ben Allan mentioned, a small amount of memory leakage from ASCEND is perfectly tolerable, providing it is fixed in magnitude, for example global variables that do not grow in time during an ASCEND process. We have a number of such 'leakages' in ASCEND resulting from dlopening of external relations and the like. Getting rid of these leakages is difficult and has not been prioritised at this stage.
The technique for adding items to the suppressions list is described in the Valgrind documention.