Skip to content

Commit

Permalink
Extend have_sanitizer with ASAN+UBSAN and MSAN
Browse files Browse the repository at this point in the history
Disable some tests that are too slow or big for MSAN.
  • Loading branch information
dr-m committed Feb 23, 2022
1 parent 23368b7 commit b91a123
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 11 deletions.
2 changes: 1 addition & 1 deletion mysql-test/include/not_asan.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# be overcome. In normal cases one should fix the bug server/test case or in
# the worst case add a (temporary?) suppression in asan.supp or lsan.supp

if (`select count(*) from information_schema.system_variables where variable_name='have_sanitizer' and global_value="ASAN"`)
if (`select count(*) from information_schema.system_variables where variable_name='have_sanitizer' and global_value like "ASAN%"`)
{
--skip Can't be run with ASan
}
6 changes: 6 additions & 0 deletions mysql-test/include/not_msan.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# This file should only be used with tests that are too big or slow for MSAN.

if (`select count(*) from information_schema.system_variables where variable_name='have_sanitizer' and global_value like "MSAN%"`)
{
--skip Can't be run WITH_MSAN
}
2 changes: 1 addition & 1 deletion mysql-test/include/not_ubsan.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# be overcome. In normal cases one should fix the bug server/test case or in
# the worst case add a (temporary?) suppression in asan.supp or lsan.supp

if (`select count(*) from information_schema.system_variables where variable_name='have_sanitizer' and global_value="UBSAN"`)
if (`select count(*) from information_schema.system_variables where variable_name='have_sanitizer' and global_value LIKE "%UBSAN"`)
{
--skip Can't be run with UBSAN
}
4 changes: 3 additions & 1 deletion mysql-test/include/rpl_stop_server.inc
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ if ($rpl_debug)

# Send shutdown to the connected server and give
# it 60 seconds (of mysqltest's default) to die before zapping it
shutdown_server;
let $rpl_shutdown_timeout= `select 60*(1+9*count(*)) from information_schema.system_variables where variable_name='have_sanitizer' and global_value like "MSAN%"`;

shutdown_server $rpl_shutdown_timeout;

--source include/wait_until_disconnected.inc

Expand Down
1 change: 1 addition & 0 deletions mysql-test/main/sum_distinct-big.test
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
--source include/big_test.inc
# Test will take more than one hour with valgrind
--source include/not_valgrind.inc
--source include/not_msan.inc
--source include/have_innodb.inc
--source include/have_sequence.inc

Expand Down
2 changes: 1 addition & 1 deletion mysql-test/suite/binlog/t/flashback-largebinlog.test
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
--let $mysqlbinlog_output= tmp/mysqlbinlog_big_1.out

--source include/have_binlog_format_row.inc

--source include/have_log_bin.inc

# This is a big test.
--source include/big_test.inc
--source include/not_msan.inc
# Test needs more than 4G of memory
--source include/have_64bit.inc

Expand Down
1 change: 1 addition & 0 deletions mysql-test/suite/maria/max_length.test
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
--source include/big_test.inc
# This test is too slow for valgrind
--source include/not_valgrind.inc
--source include/not_msan.inc

drop table if exists t1,t2;

Expand Down
20 changes: 13 additions & 7 deletions sql/sys_vars.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5078,13 +5078,19 @@ static Sys_var_have Sys_have_symlink(
"--skip-symbolic-links option.",
READ_ONLY GLOBAL_VAR(have_symlink), NO_CMD_LINE);

#if defined(__SANITIZE_ADDRESS__) || defined(WITH_UBSAN)

#ifdef __SANITIZE_ADDRESS__
#define SANITIZER_MODE "ASAN"
#else
#define SANITIZER_MODE "UBSAN"
#endif /* __SANITIZE_ADDRESS__ */
#if defined __SANITIZE_ADDRESS__ || defined WITH_UBSAN || __has_feature(memory_sanitizer)

# ifdef __SANITIZE_ADDRESS__
# ifdef WITH_UBSAN
# define SANITIZER_MODE "ASAN+UBSAN"
# else
# define SANITIZER_MODE "ASAN"
# endif
# elif defined WITH_UBSAN
# define SANITIZER_MODE "UBSAN"
# else
# define SANITIZER_MODE "MSAN"
# endif

static char *have_sanitizer;
static Sys_var_charptr Sys_have_santitizer(
Expand Down

0 comments on commit b91a123

Please sign in to comment.