Browse Source

Extend have_sanitizer with ASAN+UBSAN and MSAN

Disable some tests that are too slow or big for MSAN.
pull/2031/head
Marko Mäkelä 4 years ago
parent
commit
b91a123d8c
  1. 2
      mysql-test/include/not_asan.inc
  2. 6
      mysql-test/include/not_msan.inc
  3. 2
      mysql-test/include/not_ubsan.inc
  4. 4
      mysql-test/include/rpl_stop_server.inc
  5. 1
      mysql-test/main/sum_distinct-big.test
  6. 2
      mysql-test/suite/binlog/t/flashback-largebinlog.test
  7. 1
      mysql-test/suite/maria/max_length.test
  8. 20
      sql/sys_vars.cc

2
mysql-test/include/not_asan.inc

@ -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
mysql-test/include/not_msan.inc

@ -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
mysql-test/include/not_ubsan.inc

@ -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
mysql-test/include/rpl_stop_server.inc

@ -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

1
mysql-test/main/sum_distinct-big.test

@ -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

2
mysql-test/suite/binlog/t/flashback-largebinlog.test

@ -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

1
mysql-test/suite/maria/max_length.test

@ -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;

20
sql/sys_vars.cc

@ -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(

Loading…
Cancel
Save