Hi Chuck
Firstly, thanks for taking the time to respond. The sanitizers exit on failure thing makes perfect sense although why it isn't the default behavior mystifies me. Turning it on gets me the effect I am looking for (CTest can detect a failure) but what I really want to know and the reason for my original post is: 1) Why do I always get Valgrind when I run memtest? Either that or "Memory checker (MemoryCheckCommand) not set, or cannot find the specified program.". Looking at the source code I _think_ setting the MEMORYCHECK_TYPE variable to AddressSanitizer should be enough, I shouldn't need to set the MemoryCheckCommand and there isn't one for the sanitizers anyway 2) The documentation hints that CTest should be able to understand the output of the sanitizers, I can't say if this true or not with any certainty but it doesn't seem to be the case Thanks again! ________________________________ From: Chuck Atkins <chuck.atk...@kitware.com> Sent: Thursday, January 5, 2017 11:47:13 AM To: Karl Robinson Cc: cmake-developers@cmake.org Subject: Re: [cmake-developers] Fw: CTest and Address Sanitizer Hi Karl, >> I believe that the AddressSanitizer should normally stop with a non-zero >> error code right after the first error. I have many tests within each executable test application, forcing the application to exit on the first error is not optimal since it means I cannot get an overview of all the issues and triage/fix them in logical order. Instead I have to test/fix/retest every time That's by design and isn't to do with how CMake integrates asan; i.e. it's just how asan works. The idea being that once you hit a memory corruption then any further results can't be relied on. From the asan documentation: http://clang.llvm.org/docs/AddressSanitizer.html "If a bug is detected, the program will print an error message to stderr and exit with a non-zero exit code. AddressSanitizer exits on the first detected error. This is by design: * This approach allows AddressSanitizer to produce faster and smaller generated code (both by ~5%). * Fixing bugs becomes unavoidable. AddressSanitizer does not produce false alarms. Once a memory corruption occurs, the program is in an inconsistent state, which could lead to confusing results and potentially misleading subsequent reports. " - Chuck
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake-developers