@@ -105,3 +105,56 @@ jobs:
105105 ${{github.workspace}}.build/src/dectris/neggia/plugin/dectris-neggia.so
106106 if-no-files-found : error
107107 retention-days : 90
108+
109+ # Concurrency gates. Flags go via env, NOT -DCMAKE_*_FLAGS — a -D would
110+ # silently drop the gtest -Wno-error accommodation.
111+ tsan :
112+ runs-on : ubuntu-24.04
113+ env :
114+ CXXFLAGS : -fsanitize=thread -g -Wno-error=maybe-uninitialized
115+ CFLAGS : -fsanitize=thread -g
116+ TSAN_OPTIONS : halt_on_error=1
117+ steps :
118+ - name : Checkout
119+ uses : actions/checkout@v4
120+ with :
121+ submodules : true
122+ - name : Create Build Directory
123+ run : cmake -E make_directory ${{github.workspace}}.build
124+ - name : Configure CMake (Release)
125+ run : cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=Release -DDEBUG_PARSING=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5
126+ working-directory : ${{github.workspace}}.build
127+ - name : Prove TSan instrumentation (fail if flags were lost)
128+ run : grep -- '-fsanitize=thread' CMakeCache.txt
129+ working-directory : ${{github.workspace}}.build
130+ - name : Build
131+ run : cmake --build .
132+ working-directory : ${{github.workspace}}.build
133+ - name : Test
134+ run : ctest --output-on-failure
135+ working-directory : ${{github.workspace}}.build
136+
137+ helgrind :
138+ runs-on : ubuntu-24.04
139+ env :
140+ CXXFLAGS : -Wno-error=maybe-uninitialized
141+ steps :
142+ - name : Install valgrind
143+ run : sudo apt-get update && sudo apt-get install -y valgrind
144+ - name : Checkout
145+ uses : actions/checkout@v4
146+ with :
147+ submodules : true
148+ - name : Create Build Directory
149+ run : cmake -E make_directory ${{github.workspace}}.build
150+ - name : Configure CMake (Debug for symbolized Helgrind reports)
151+ run : cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=Debug -DDEBUG_PARSING=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5
152+ working-directory : ${{github.workspace}}.build
153+ - name : Build
154+ run : cmake --build .
155+ working-directory : ${{github.workspace}}.build
156+ - name : Helgrind on concurrency tests (cwd = test dir for fixture symlink)
157+ run : |
158+ valgrind --tool=helgrind --error-exitcode=1 ./Test_XdsPluginConcurrent
159+ valgrind --tool=helgrind --error-exitcode=1 ./Test_XdsPlugin
160+ working-directory : ${{github.workspace}}.build/src/dectris/neggia/test
0 commit comments