@@ -104,6 +104,17 @@ for full_test_worker in ["debian-12-32-bit", "debian-12-32-bit-debug"]:
104104 shm_size = "30G" ,
105105 )
106106
107+ # reusing the msan image for ubsan/asan
108+ for ubasan_worker in ["ubasan-clang-20" , "ubasan-clang-20-debug" ]:
109+ addWorker (
110+ "apexis-bbw" ,
111+ 3 ,
112+ ubasan_worker ,
113+ os .environ ["CONTAINER_REGISTRY_URL" ] + "debian12-msan-clang-20" ,
114+ jobs = 15 ,
115+ save_packages = False ,
116+ )
117+
107118for msan_worker in ["msan-clang-20" , "msan-clang-20-debug" ]:
108119 addWorker (
109120 "apexis-bbw" ,
@@ -152,21 +163,47 @@ f_asan_ubsan_build.addStep(
152163# build steps
153164f_asan_ubsan_build .addStep (
154165 steps .ShellCommand (
155- command = 'echo "leak:libtasn1\n leak:libgnutls\n leak:libgmp" > mysql-test/lsan.supp' ,
166+ name = "fetch latest UBSAN/ASAN filters" ,
167+ command = """
168+ for san in UBSAN ASAN ; do \\
169+ curl https://raw.githubusercontent.com/mariadb-corporation/mariadb-qa/refs/heads/master/"$san".filter >> mysql-test/"${san,,*}".supp; \\
170+ done
171+ """ ,
156172 doStepIf = filterBranch ,
157173 )
158174)
175+ f_asan_ubsan_build .addStep (
176+ steps .ShellCommand (command = "cat mysql-test/asan.supp" , doStepIf = filterBranch )
177+ )
178+ f_asan_ubsan_build .addStep (
179+ steps .ShellCommand (command = "cat mysql-test/ubsan.supp" , doStepIf = filterBranch )
180+ )
159181f_asan_ubsan_build .addStep (
160182 steps .ShellCommand (command = "cat mysql-test/lsan.supp" , doStepIf = filterBranch )
161183)
162184f_asan_ubsan_build .addStep (
163185 steps .Compile (
186+ name = "build" ,
164187 command = [
165188 "sh" ,
166189 "-c" ,
167190 util .Interpolate (
168- "cmake . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DWITH_ASAN=YES -DWITH_UBSAN=YES -DPLUGIN_TOKUDB=NO -DPLUGIN_MROONGA=NO -DPLUGIN_OQGRAPH=NO -DPLUGIN_ROCKSDB=NO -DPLUGIN_CONNECT=NO -DWITH_SAFEMALLOC=OFF -DWITH_ZLIB=bundled -DWITH_SSL=bundled -DWITH_DBUG_TRACE=OFF -DWITH_SAFEMALLOC=OFF && make VERBOSE=1 -j%(kw:jobs)s package" ,
191+ """
192+ cmake . \\
193+ -DWITH_ASAN=ON \\
194+ -DWITH_ASAN_SCOPED=ON \\
195+ -DWITH_UBSAN=ON \\
196+ -DCMAKE_BUILD_TYPE=%(kw:build_type)s \\
197+ -DCMAKE_C_COMPILER=%(kw:c_compiler)s \\
198+ -DCMAKE_CXX_COMPILER=%(kw:cxx_compiler)s \\
199+ -DWITH_EMBEDDED_SERVER=OFF \\
200+ -DPLUGIN_PERFSCHEMA=NO \\
201+ -DWITH_DBUG_TRACE=OFF \\
202+ && cmake --build . --parallel %(kw:jobs)s --verbose""" ,
169203 jobs = util .Property ("jobs" , default = "$(getconf _NPROCESSORS_ONLN)" ),
204+ c_compiler = util .Property ("c_compiler" , default = "clang" ),
205+ cxx_compiler = util .Property ("cxx_compiler" , default = "clang++" ),
206+ build_type = util .Property ("build_type" , default = "RelWithDebInfo" ),
170207 ),
171208 ],
172209 haltOnFailure = "true" ,
@@ -180,7 +217,22 @@ f_asan_ubsan_build.addStep(
180217 "sh" ,
181218 "-c" ,
182219 util .Interpolate (
183- 'cd mysql-test && MTR_FEEDBACK_PLUGIN=1 ASAN_OPTIONS="abort_on_error=1" LSAN_OPTIONS="print_suppressions=0,suppressions=`pwd`/lsan.supp" perl mysql-test-run.pl --verbose-restart --force --retry=3 --max-save-core=2 --max-save-datadir=10 --max-test-fail=20 --mem --parallel=$(expr %(kw:jobs)s \* 2)' ,
220+ """
221+ cd mysql-test \\
222+ && MTR_FEEDBACK_PLUGIN=1 \\
223+ LSAN_OPTIONS="print_suppressions=0,suppressions=$(pwd)/lsan.supp" \\
224+ ASAN_OPTIONS=suppressions=$(pwd)/asan.supp:quarantine_size_mb=512:atexit=0:detect_invalid_pointer_pairs=3:dump_instruction_bytes=1:allocator_may_return_null=1 \\
225+ UBSAN_OPTIONS=suppressions=$(pwd)/ubsan.supp:print_stacktrace=1:report_error_type=1 \\
226+ perl mysql-test-run.pl \\
227+ --verbose-restart \\
228+ --force \\
229+ --retry=3 \\
230+ --max-save-core=2 \\
231+ --max-save-datadir=10 \\
232+ --max-test-fail=20 \\
233+ --mem \\
234+ --big-test \\
235+ --parallel=$(expr %(kw:jobs)s \* 2)""" ,
184236 jobs = util .Property ("jobs" , default = "$(getconf _NPROCESSORS_ONLN)" ),
185237 ),
186238 ],
@@ -940,6 +992,33 @@ c["builders"].append(
940992 )
941993)
942994
995+ c ["builders" ].append (
996+ util .BuilderConfig (
997+ name = "amd64-ubasan-clang-20" ,
998+ workernames = workers ["x64-bbw-docker-ubasan-clang-20" ],
999+ tags = ["Debian" , "clang" , "asan" , "ubsan" ],
1000+ collapseRequests = True ,
1001+ nextBuild = nextBuild ,
1002+ canStartBuild = canStartBuild ,
1003+ locks = getLocks ,
1004+ factory = f_asan_ubsan_build ,
1005+ )
1006+ )
1007+
1008+ c ["builders" ].append (
1009+ util .BuilderConfig (
1010+ name = "amd64-ubasan-clang-20" ,
1011+ workernames = workers ["x64-bbw-docker-ubasan-clang-20-debug" ],
1012+ tags = ["Debian" , "clang" , "asan" , "ubsan" , "debug" ],
1013+ collapseRequests = True ,
1014+ nextBuild = nextBuild ,
1015+ canStartBuild = canStartBuild ,
1016+ properties = {"build_type" : "Debug" },
1017+ locks = getLocks ,
1018+ factory = f_asan_ubsan_build ,
1019+ )
1020+ )
1021+
9431022c ["builders" ].append (
9441023 util .BuilderConfig (
9451024 name = "amd64-msan-clang-20" ,
0 commit comments