Commit 56adf76
authored
Add EXECUTORCH_USE_SANITIZER CMake option for ASAN+UBSAN support (#17114)
Add a first-class CMake option to enable AddressSanitizer and
UndefinedBehaviorSanitizer for catching memory bugs and undefined
behavior in C++ tests.
Previously, sanitizers were enabled via a CXXFLAGS hack in utils.sh
that only applied to the initial build, but the test build in
run_oss_cpp_tests.sh would rebuild from scratch without sanitizers.
This meant C++ tests (including runtime, portable kernels, and XNNPACK
tests) were not actually running with sanitizer coverage.
All unittest in pull mode ("unittest / linux" and "unittest /macos")
will be compiling and running with sanitizer on from now on.
The new design:
- Adds EXECUTORCH_USE_SANITIZER as a proper CMake option
- CI scripts export EXECUTORCH_USE_SANITIZER=ON for Debug builds
- Both utils.sh and run_oss_cpp_tests.sh check the env var and pass
the CMake flag, ensuring consistent sanitizer coverage
- CMakeLists.txt applies -fsanitize=address,undefined flags globally
- Verified CMake configuration shows "Sanitizers enabled: address,
undefined"
- Verified compile_commands.json contains -fsanitize=address,undefined
- Built and ran runtime_core_test with sanitizers, confirmed ASAN/UBSAN
symbols present in binary (nm shows ___asan_* and ___ubsan_* symbols)
- Verified Debug mode enables sanitizers, Release mode does not
- All shell scripts pass syntax check (bash -n)1 parent 3b3c9d4 commit 56adf76
File tree
6 files changed
+59
-6
lines changed- .ci/scripts
- test
- tools/cmake/preset
6 files changed
+59
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
23 | 28 | | |
24 | 29 | | |
25 | 30 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
22 | 27 | | |
23 | 28 | | |
24 | 29 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
164 | 164 | | |
165 | 165 | | |
166 | 166 | | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
171 | 172 | | |
172 | | - | |
| 173 | + | |
| 174 | + | |
173 | 175 | | |
174 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
175 | 179 | | |
176 | 180 | | |
177 | 181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
77 | 105 | | |
78 | 106 | | |
79 | 107 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
35 | 41 | | |
36 | 42 | | |
37 | 43 | | |
| 44 | + | |
38 | 45 | | |
39 | 46 | | |
40 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
58 | 62 | | |
59 | 63 | | |
60 | 64 | | |
| |||
0 commit comments