Skip to content

Commit 477bc30

Browse files
committed
MDBF-741 Add new UBSAN/ASAN builder for 10.6+
Using the MSAN builder
1 parent 3e416a3 commit 477bc30

2 files changed

Lines changed: 69 additions & 3 deletions

File tree

constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,11 @@
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",
154156
"amd64-msan-clang-20",
155157
"amd64-ubuntu-2204",
156158
"ppc64le-ubuntu-2204",

master-docker-nonstandard-2/master.cfg

Lines changed: 67 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
107117
for 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
153163
f_asan_ubsan_build.addStep(
154164
steps.ShellCommand(
155-
command='echo "leak:libtasn1\nleak:libgnutls\nleak: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+
)
159180
f_asan_ubsan_build.addStep(
160181
steps.ShellCommand(command="cat mysql-test/lsan.supp", doStepIf=filterBranch)
161182
)
162183
f_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+
9431007
c["builders"].append(
9441008
util.BuilderConfig(
9451009
name="amd64-msan-clang-20",

0 commit comments

Comments
 (0)