Developer information
Enabling AddressSanitizer (for debugging)
Tested compiler: clang-7
cmake options:
-DBUILD_fckit=OFF -DENABLE_FORTRAN=OFF \ -DCMAKE_CXX_FLAGS='-fsanitize=address -fno-omit-frame-pointer' \ -DCMAKE_C_FLAGS='-fsanitize=address -fno-omit-frame-pointer' \ -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address
create a suppressions file (e.g. as in atlas/tools/lsan.supp)
leak:libomp leak:libopen-pal leak:MPI_Init
environment variable:
export LSAN_OPTIONS=suppressions=<path-to-lsan.supp>:fast_unwind_on_malloc=0
In LSAN_OPTIONS
, the option fast_unwind_on_malloc=0
is required to get full stacktrace to be able to suppress MPI_Init
Enabling UndefinedBehaviorSanitizer (for debugging)
Tested compiler: clang-7
cmake options:
-DCMAKE_CXX_FLAGS='-fsanitize=undefined -fno-omit-frame-pointer -fno-sanitize-recover=all -fsanitize-blacklist=<path-to-ubsan.blacklist>'
where the blacklist file ubsan.blacklist contains routines or files where no errors should be reported e.g.
src:*/CGAL/Compact_container.h
The third party library CGAL (version 4.9) contains a possible error that we have to suppress.