Skip to content

Commit ea043de

Browse files
committed
Made DataFrame edit overlay thread safe
1 parent fadae4d commit ea043de

12 files changed

Lines changed: 1016 additions & 202 deletions

File tree

.github/workflows/README.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,18 @@ This directory contains GitHub Actions workflows for comprehensive memory and th
1212
- **UndefinedBehaviorSanitizer (UBSan)** - Catches undefined behavior: signed overflow, type mismatches
1313

1414
**Config:**
15-
- Runs on Ubuntu with GCC
16-
- Tests C++17 and C++20 standards
15+
- Runs Linux sanitizer coverage on Ubuntu with GCC
16+
- Adds a dedicated Windows/MSVC AddressSanitizer leg on C++20
1717
- Debug builds for better diagnostics
1818
- Timeout: 20 minutes per configuration
1919
- Artifacts: Upload logs on failure
2020

2121
**Key Features:**
22-
- Matrix testing: 3 sanitizers × 2 C++ standards = 6 parallel jobs
22+
- Linux matrix testing:
23+
- ASan on C++20
24+
- TSan on C++20
25+
- UBSan on C++17
26+
- Dedicated Windows/MSVC ASan coverage for AVX2- and codegen-sensitive issues
2327
- Fail-fast disabled to see all results
2428
- Environment variables configured for halt-on-error behavior
2529

@@ -54,6 +58,16 @@ cmake -B build/asan -DCMAKE_BUILD_TYPE=Debug \
5458
-DCMAKE_CXX_FLAGS="-fsanitize=address -fno-omit-frame-pointer -g"
5559
cmake --build build/asan
5660
cd build/asan && ctest --output-on-failure && cd ../..
61+
62+
# Windows / MSVC AddressSanitizer
63+
cmake -S . -B build/msvc-asan ^
64+
-DCSV_CXX_STANDARD=20 ^
65+
-DCMAKE_BUILD_TYPE=RelWithDebInfo ^
66+
-DCMAKE_CXX_FLAGS="/fsanitize=address /Zi" ^
67+
-DCMAKE_C_FLAGS="/fsanitize=address /Zi" ^
68+
-DCMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO"
69+
cmake --build build/msvc-asan --config RelWithDebInfo
70+
ctest --test-dir build/msvc-asan --build-config RelWithDebInfo --output-on-failure
5771
```
5872

5973
### CI/CD Pipeline Order
@@ -75,6 +89,7 @@ cd build/asan && ctest --output-on-failure && cd ../..
7589
- **Why Important:** Catches CSVFieldList memory issues like issue #278
7690
- Cannot run simultaneously with TSan (different memory models)
7791
- Better performance than TSan for memory safety
92+
- The MSVC C++20 ASan leg is especially useful for AVX2- and codegen-sensitive regressions
7893

7994
### Valgrind
8095
- Slower than sanitizers but more mature tool

.github/workflows/sanitizers.yml

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,23 @@ permissions:
1010
contents: read
1111

1212
jobs:
13-
sanitizers:
13+
linux-sanitizers:
1414
runs-on: ubuntu-latest
1515

1616
strategy:
1717
fail-fast: false
1818
matrix:
19-
sanitizer: [address, thread, undefined]
20-
cxx_standard: [17, 20]
2119
include:
2220
- sanitizer: address
21+
cxx_standard: 20
2322
flag: "-fsanitize=address -fno-omit-frame-pointer"
2423
name: "AddressSanitizer"
2524
- sanitizer: thread
25+
cxx_standard: 20
2626
flag: "-fsanitize=thread"
2727
name: "ThreadSanitizer"
2828
- sanitizer: undefined
29+
cxx_standard: 17
2930
flag: "-fsanitize=undefined -fno-omit-frame-pointer"
3031
name: "UndefinedBehaviorSanitizer"
3132

@@ -69,9 +70,52 @@ jobs:
6970
if: failure()
7071
uses: actions/upload-artifact@v4
7172
with:
72-
name: sanitizer-logs-${{ matrix.sanitizer }}-std${{ matrix.cxx_standard }}
73+
name: linux-sanitizer-logs-${{ matrix.sanitizer }}-std${{ matrix.cxx_standard }}
7374
path: build/Testing/
7475

76+
windows-asan-msvc:
77+
name: MSVC AddressSanitizer (C++20)
78+
runs-on: windows-latest
79+
80+
env:
81+
ASAN_OPTIONS: "halt_on_error=1"
82+
83+
steps:
84+
- name: Checkout repository and submodules
85+
uses: actions/checkout@v5
86+
with:
87+
submodules: recursive
88+
89+
- name: Set up MSVC developer command prompt
90+
uses: ilammy/msvc-dev-cmd@v1
91+
92+
- name: Configure CMake with MSVC AddressSanitizer
93+
shell: cmd
94+
run: >
95+
cmake -S %GITHUB_WORKSPACE%
96+
-B %GITHUB_WORKSPACE%\build\msvc-asan
97+
-DCSV_CXX_STANDARD=20
98+
-DCMAKE_BUILD_TYPE=RelWithDebInfo
99+
-DCMAKE_CXX_FLAGS="/fsanitize=address /Zi"
100+
-DCMAKE_C_FLAGS="/fsanitize=address /Zi"
101+
-DCMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO"
102+
-DCMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO"
103+
104+
- name: Build with MSVC AddressSanitizer
105+
run: cmake --build ${{ github.workspace }}/build/msvc-asan --config RelWithDebInfo
106+
107+
- name: Test with MSVC AddressSanitizer
108+
working-directory: ${{ github.workspace }}/build/msvc-asan
109+
run: ctest --build-config RelWithDebInfo --output-on-failure -V
110+
timeout-minutes: 20
111+
112+
- name: Upload MSVC AddressSanitizer logs
113+
if: failure()
114+
uses: actions/upload-artifact@v4
115+
with:
116+
name: windows-msvc-asan-logs-std20
117+
path: build/msvc-asan/Testing/
118+
75119
valgrind:
76120
runs-on: ubuntu-latest
77121

0 commit comments

Comments
 (0)