X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=test%2Fsetup.cpp;h=a506976a0c793d750a7d6f23169476e59941bf0d;hb=e1ba5b9e4eb179295274026ad8fd40a68eb6c67f;hp=22c7c2ada9cfc4060aa1c610f0dca73bb3df034d;hpb=af58c4c6067fa41da3b4c8f01200065226070e37;p=awesomized%2Flibmemcached diff --git a/test/setup.cpp b/test/setup.cpp index 22c7c2ad..a506976a 100644 --- a/test/setup.cpp +++ b/test/setup.cpp @@ -59,6 +59,7 @@ static inline void setup_signals() { # define LSAN_OPTIONS \ "suppressions=" SOURCES_ROOT "/test/LeakSanitizer.suppressions," \ "" + static inline void setup_asan(char **argv) { const auto set = getenv("ASAN_OPTIONS"); @@ -82,6 +83,24 @@ static inline void setup_lsan(char **argv) { # define setup_lsan(a) (void) a #endif +#if HAVE_TSAN +# define TSAN_OPTIONS \ + "abort_on_error=0," \ + "halt_on_error=0" \ + "" +static inline void setup_tsan(char **argv) { + const auto set = getenv("TSAN_OPTIONS"); + + if (!set || !*set) { + SET_ENV_EX(tsan, "TSAN_OPTIONS", TSAN_OPTIONS, 0); + execvp(argv[0], argv); + perror("exec()"); + } +} +#else +# define setup_tsan(a) (void) a +#endif + #if LIBMEMCACHED_WITH_SASL_SUPPORT static inline void setup_sasl() { SET_ENV_EX(sasl_pwdb, "MEMCACHED_SASL_PWDB", LIBMEMCACHED_WITH_SASL_PWDB, 0); @@ -100,6 +119,7 @@ int setup(int &, char ***argv) { setup_random(); setup_asan(*argv); setup_lsan(*argv); + setup_tsan(*argv); setup_sasl(); return 0;