@@ -104,6 +104,16 @@ 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+ addWorker (
109+ "x64-bbw" ,
110+ 3 ,
111+ "ubasan-clang-20" ,
112+ os .environ ["CONTAINER_REGISTRY_URL" ] + "debian12-msan-clang-20" ,
113+ jobs = 15 ,
114+ save_packages = False ,
115+ )
116+
107117for msan_worker in ["msan-clang-20" , "msan-clang-20-debug" ]:
108118 addWorker (
109119 "apexis-bbw" ,
@@ -152,21 +162,47 @@ f_asan_ubsan_build.addStep(
152162# build steps
153163f_asan_ubsan_build .addStep (
154164 steps .ShellCommand (
155- command = 'echo "leak:libtasn1\n leak:libgnutls\n leak:libgmp" > mysql-test/lsan.supp' ,
165+ name = "fetch latest UBSAN/ASAN filters" ,
166+ command = """
167+ for san in UBSAN ASAN ; do \\
168+ curl https://raw.githubusercontent.com/mariadb-corporation/mariadb-qa/refs/heads/master/"$san".filter >> mysql-test/"${san,,*}".supp; \\
169+ done
170+ """ ,
156171 doStepIf = filterBranch ,
157172 )
158173)
174+ f_asan_ubsan_build .addStep (
175+ steps .ShellCommand (command = "cat mysql-test/asan.supp" , doStepIf = filterBranch )
176+ )
177+ f_asan_ubsan_build .addStep (
178+ steps .ShellCommand (command = "cat mysql-test/ubsan.supp" , doStepIf = filterBranch )
179+ )
159180f_asan_ubsan_build .addStep (
160181 steps .ShellCommand (command = "cat mysql-test/lsan.supp" , doStepIf = filterBranch )
161182)
162183f_asan_ubsan_build .addStep (
163184 steps .Compile (
185+ name = "build" ,
164186 command = [
165187 "sh" ,
166188 "-c" ,
167189 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" ,
190+ """
191+ cmake . \\
192+ -DWITH_ASAN=ON \\
193+ -DWITH_ASAN_SCOPED=ON \\
194+ -DWITH_UBSAN=ON \\
195+ -DCMAKE_BUILD_TYPE=%(kw:build_type)s \\
196+ -DCMAKE_C_COMPILER=%(kw:c_compiler)s \\
197+ -DCMAKE_CXX_COMPILER=%(kw:cxx_compiler)s \\
198+ -DWITH_EMBEDDED_SERVER=OFF \\
199+ -DPLUGIN_PERFSCHEMA=NO \\
200+ -DWITH_DBUG_TRACE=OFF \\
201+ && cmake --build . --parallel %(kw:jobs)s --verbose""" ,
169202 jobs = util .Property ("jobs" , default = "$(getconf _NPROCESSORS_ONLN)" ),
203+ c_compiler = util .Property ("c_compiler" , default = "clang" ),
204+ cxx_compiler = util .Property ("cxx_compiler" , default = "clang++" ),
205+ build_type = util .Property ("build_type" , default = "RelWithDebInfo" ),
170206 ),
171207 ],
172208 haltOnFailure = "true" ,
@@ -180,7 +216,22 @@ f_asan_ubsan_build.addStep(
180216 "sh" ,
181217 "-c" ,
182218 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)' ,
219+ """
220+ cd mysql-test \\
221+ && MTR_FEEDBACK_PLUGIN=1 \\
222+ LSAN_OPTIONS="print_suppressions=0,suppressions=$(pwd)/lsan.supp" \\
223+ 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 \\
224+ UBSAN_OPTIONS=suppressions=$(pwd)/ubsan.supp:print_stacktrace=1:report_error_type=1 \\
225+ perl mysql-test-run.pl \\
226+ --verbose-restart \\
227+ --force \\
228+ --retry=3 \\
229+ --max-save-core=2 \\
230+ --max-save-datadir=10 \\
231+ --max-test-fail=20 \\
232+ --mem \\
233+ --big-test \\
234+ --parallel=$(expr %(kw:jobs)s \* 2)""" ,
184235 jobs = util .Property ("jobs" , default = "$(getconf _NPROCESSORS_ONLN)" ),
185236 ),
186237 ],
@@ -940,6 +991,19 @@ c["builders"].append(
940991 )
941992)
942993
994+ c ["builders" ].append (
995+ util .BuilderConfig (
996+ name = "amd64-ubasan-clang-20" ,
997+ workernames = workers ["x64-bbw-docker-ubasan-clang-20" ],
998+ tags = ["Debian" , "clang" , "asan" , "ubsan" ],
999+ collapseRequests = True ,
1000+ nextBuild = nextBuild ,
1001+ canStartBuild = canStartBuild ,
1002+ locks = getLocks ,
1003+ factory = f_asan_ubsan_build ,
1004+ )
1005+ )
1006+
9431007c ["builders" ].append (
9441008 util .BuilderConfig (
9451009 name = "amd64-msan-clang-20" ,
0 commit comments