Skip to content

Commit b2067e6

Browse files
committed
Add TSan and Helgrind CI jobs
1 parent 56d1d6c commit b2067e6

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

‎.github/workflows/main.yml‎

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)