From 8828a41077dd6de6c4b8761d36173962a57a8e41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 4 Jul 2019 14:25:59 +0200 Subject: [PATCH 1/2] Declare __SANITIZE_THREAD__ in isc/util.h when clang ThreadSanitizer is used --- lib/isc/include/isc/util.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/isc/include/isc/util.h b/lib/isc/include/isc/util.h index 6602aac2b37..730cfc268fc 100644 --- a/lib/isc/include/isc/util.h +++ b/lib/isc/include/isc/util.h @@ -194,6 +194,10 @@ #define __SANITIZE_ADDRESS__ 1 #endif +#if __has_feature(thread_sanitizer) +#define __SANITIZE_THREAD__ 1 +#endif + #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR >= 6) #define STATIC_ASSERT(cond, msg) _Static_assert(cond, msg) #elif __has_feature(c_static_assert) -- GitLab From 2230b9d55dea465f46c9e9013946fc9561f1c46f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 4 Jul 2019 14:25:59 +0200 Subject: [PATCH 2/2] Disable benchmark tests when Thread Sanitizer is enabled --- lib/dns/tests/rbt_test.c | 8 ++++---- lib/isc/tests/mem_test.c | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/dns/tests/rbt_test.c b/lib/dns/tests/rbt_test.c index bd002026387..9e1ffd7f3ae 100644 --- a/lib/dns/tests/rbt_test.c +++ b/lib/dns/tests/rbt_test.c @@ -1202,7 +1202,7 @@ rbt_nodechain(void **state) { test_context_teardown(ctx); } -#ifdef DNS_BENCHMARK_TESTS +#if defined(DNS_BENCHMARK_TESTS) && !defined(__SANITIZE_THREAD__) /* * XXXMUKS: Don't delete this code. It is useful in benchmarking the @@ -1317,7 +1317,7 @@ benchmark(void **state) { dns_rbt_destroy(&mytree); } -#endif /* DNS_BENCHMARK_TESTS */ +#endif /* defined(DNS_BENCHMARK_TESTS) && !defined(__SANITIZE_THREAD__) */ int main(void) { @@ -1342,9 +1342,9 @@ main(void) { _setup, _teardown), cmocka_unit_test_setup_teardown(rbt_nodechain, _setup, _teardown), -#ifdef DNS_BENCHMARK_TESTS +#if defined(DNS_BENCHMARK_TESTS) && !defined(__SANITIZE_THREAD__) cmocka_unit_test_setup_teardown(benchmark, _setup, _teardown), -#endif /* DNS_BENCHMARK_TESTS */ +#endif /* defined(DNS_BENCHMARK_TESTS) && !defined(__SANITIZE_THREAD__) */ }; return (cmocka_run_group_tests(tests, NULL, NULL)); diff --git a/lib/isc/tests/mem_test.c b/lib/isc/tests/mem_test.c index bdf8c2a53c3..0f783422e67 100644 --- a/lib/isc/tests/mem_test.c +++ b/lib/isc/tests/mem_test.c @@ -384,6 +384,8 @@ isc_mem_traceflag_test(void **state) { } #endif +#if !defined(__SANITIZE_THREAD__) + #define ITERS 512 #define NUM_ITEMS 1024 //768 #define ITEM_SIZE 65534 @@ -503,6 +505,8 @@ isc_mempool_benchmark(void **state) { isc_mutex_destroy(&mplock); } +#endif /* __SANITIZE_THREAD */ + /* * Main */ @@ -525,10 +529,12 @@ main(void) { cmocka_unit_test_setup_teardown(isc_mem_traceflag_test, _setup, _teardown), #endif +#if !defined(__SANITIZE_THREAD__) cmocka_unit_test_setup_teardown(isc_mem_benchmark, _setup, _teardown), cmocka_unit_test_setup_teardown(isc_mempool_benchmark, _setup, _teardown), +#endif /* __SANITIZE_THREAD__ */ }; return (cmocka_run_group_tests(tests, NULL, NULL)); -- GitLab