Skip to content

Commit 7af0844

Browse files
authored
Merge pull request QMCPACK#5568 from ye-luo/asan_supp
Restrict asan suppression to only the MPI case.
2 parents af6914a + e361419 commit 7af0844

2 files changed

Lines changed: 21 additions & 22 deletions

File tree

CMakeLists.txt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -163,25 +163,9 @@ set(HAVE_EINSPLINE 1) # to be removed
163163
option(QMC_EXP_THREADING "Experimental non openmp threading models" OFF)
164164
mark_as_advanced(QMC_EXP_THREADING)
165165

166-
#--------------------------------------------------------------------
167-
# Sanitizer options
168-
#--------------------------------------------------------------------
169-
170166
# Add optional sanitizers ASAN, UBSAN, MSAN, TYPESAN
171167
set(VALID_SANITIZERS "asan" "ubsan" "tsan" "msan" "typesan")
172-
set(ENABLE_SANITIZER "" CACHE STRING "asan,ubsan,tsan,msan,typesan")
173-
set_property(CACHE ENABLE_SANITIZER PROPERTY STRINGS ${VALID_SANITIZERS})
174-
175-
set(LSAN_OPTIONS "suppressions=${PROJECT_SOURCE_DIR}/config/sanitizers/lsan.supp" CACHE STRING "cached value of environment variable LSAN_OPTIONS used by ctest")
176-
177-
if(ENABLE_SANITIZER)
178-
# Perform sanitizer option check, only works in debug mode
179-
if(NOT ENABLE_SANITIZER IN_LIST VALID_SANITIZERS)
180-
message(FATAL_ERROR "Invalid -DENABLE_SANITIZER=${ENABLE_SANITIZER}, value must be one of ${VALID_SANITIZERS}")
181-
else()
182-
message(STATUS "Enable sanitizer ENABLE_SANITIZER=${ENABLE_SANITIZER}")
183-
endif()
184-
endif()
168+
set(ENABLE_SANITIZER "" CACHE STRING "Valid input: ${VALID_SANITIZERS} or left empty")
185169

186170
#--------------------------------------------------------------------
187171
# INSTALL_NEXUS install Nexus alongside QMCPACK
@@ -261,6 +245,12 @@ include(TestCxx17Library)
261245
# SETUP SANITIZERS FLAGS
262246
#-----------------------------------------------------------------------
263247
if(ENABLE_SANITIZER)
248+
message(STATUS "Enable sanitizer ENABLE_SANITIZER=${ENABLE_SANITIZER}")
249+
# Perform sanitizer option check
250+
if(NOT ENABLE_SANITIZER IN_LIST VALID_SANITIZERS)
251+
message(FATAL_ERROR "Invalid ENABLE_SANITIZER input, value must be one of ${VALID_SANITIZERS}")
252+
endif()
253+
264254
if(NOT ${COMPILER} MATCHES "GNU" AND NOT ${COMPILER} MATCHES "Clang")
265255
message(FATAL_ERROR "-DENABLE_SANITIZER=${ENABLE_SANITIZER} only works with GNU or Clang compilers")
266256
endif()
@@ -269,6 +259,16 @@ if(ENABLE_SANITIZER)
269259
set(CMAKE_CXX_FLAGS_SAN
270260
"-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer"
271261
CACHE STRING "AddressSanitizer C++ compiler builds." FORCE)
262+
if(NOT DEFINED LSAN_OPTIONS)
263+
if(QMC_MPI)
264+
set(LSAN_OPTIONS "suppressions=${PROJECT_SOURCE_DIR}/config/sanitizers/lsan_mpi.supp")
265+
else()
266+
set(LSAN_OPTIONS "")
267+
endif()
268+
endif()
269+
if(LSAN_OPTIONS)
270+
message(STATUS "Set environment variable LSAN_OPTIONS for CTest: ${LSAN_OPTIONS}")
271+
endif()
272272
elseif("${ENABLE_SANITIZER}" STREQUAL "ubsan")
273273
set(CMAKE_CXX_FLAGS_SAN
274274
"-fsanitize=undefined"
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
2-
3-
leak:opal_free_list_grow_st
1+
leak:calloc
42
leak:malloc
5-
leak:opal_hash_table_init2
3+
leak:operator new
64
leak:strdup
7-
leak:calloc
5+
leak:opal_free_list_grow_st
6+
leak:opal_hash_table_init2
87
leak:ompi*
98
leak:pmix*

0 commit comments

Comments
 (0)