Skip to content

Commit 08ef17d

Browse files
committed
MDBF-741 Add new UBSAN/ASAN builder for 10.6+
Using the MSAN builder with separate Debug builder too.
1 parent 3e416a3 commit 08ef17d

2 files changed

Lines changed: 85 additions & 3 deletions

File tree

constants.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,12 @@
148148
]
149149

150150
SUPPORTED_PLATFORMS["10.6"] = SUPPORTED_PLATFORMS["10.5"].copy()
151+
SUPPORTED_PLATFORMS["10.6"].remove("amd64-debian-12-asan-ubsan")
151152

152153
SUPPORTED_PLATFORMS["10.6"] += [
153154
"aarch64-ubuntu-2204",
155+
"amd64-ubasan-clang-20",
156+
"amd64-ubasan-clang-20-debug",
154157
"amd64-msan-clang-20",
155158
"amd64-ubuntu-2204",
156159
"ppc64le-ubuntu-2204",

master-docker-nonstandard-2/master.cfg

Lines changed: 82 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
107118
for 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
153164
f_asan_ubsan_build.addStep(
154165
steps.ShellCommand(
155-
command='echo "leak:libtasn1\nleak:libgnutls\nleak: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+
)
159181
f_asan_ubsan_build.addStep(
160182
steps.ShellCommand(command="cat mysql-test/lsan.supp", doStepIf=filterBranch)
161183
)
162184
f_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+
9431022
c["builders"].append(
9441023
util.BuilderConfig(
9451024
name="amd64-msan-clang-20",

0 commit comments

Comments
 (0)