gitlab-ci: Add job for ThreadSanitizer
authorAndreas Schneider <asn@samba.org>
Wed, 12 Feb 2020 09:56:13 +0000 (10:56 +0100)
committerAndreas Schneider <asn@samba.org>
Fri, 29 Jan 2021 07:42:31 +0000 (08:42 +0100)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
.gitlab-ci.yml
tests/CMakeLists.txt

index a28377d629d4b3a59019015ee78ddddbfd43f97d..d22bfb6277db99973e8b7bb728dae1d6a10372b0 100644 (file)
@@ -77,6 +77,27 @@ fedora/undefined-sanitizer:
     paths:
       - obj/
 
+# realpath() doesn't work with libtsan and returns EINVAL
+#
+# fedora/thread-sanitizer:
+tumbleweed/thread-sanitizer:
+  image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
+  script:
+  - mkdir -p obj && cd obj && cmake
+    -DCMAKE_BUILD_TYPE=ThreadSanitizer
+    -DPICKY_DEVELOPER=ON
+    -DUNIT_TESTING=ON .. &&
+    make -j$(nproc) && ctest --output-on-failure
+  tags:
+  - shared
+  except:
+  - tags
+  artifacts:
+    expire_in: 1 week
+    when: on_failure
+    paths:
+      - obj/
+
 fedora/csbuild:
   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
   script:
index 46a81c93d8c94c34eb242d92de71bb995c2f474f..72cda718758b90cc07081b462e6735c463cbbdad 100644 (file)
@@ -92,6 +92,15 @@ function(ADD_CMOCKA_TEST_ENVIRONMENT _TEST_NAME)
         set(TORTURE_ENVIRONMENT "LD_PRELOAD=${_TMP_ENV}")
     endif()
 
+    if (CMAKE_BUILD_TYPE)
+        string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
+        if (CMAKE_BUILD_TYPE_LOWER STREQUAL "addresssanitizer" OR
+            CMAKE_BUILD_TYPE_LOWER STREQUAL "threadsanitizer" OR
+            CMAKE_BUILD_TYPE_LOWER STREQUAL "undefinedsanitizer")
+            list(APPEND TORTURE_ENVIRONMENT "SOCKET_WRAPPER_DISABLE_DEEPBIND=1")
+        endif()
+    endif()
+
     set_property(TEST
                     ${_TEST_NAME}
                 PROPERTY