diff options
author | Kuba Mracek <mracek@apple.com> | 2017-03-24 16:37:02 +0000 |
---|---|---|
committer | Kuba Mracek <mracek@apple.com> | 2017-03-24 16:37:02 +0000 |
commit | b80243e5db3482b79da471ec578b35d6afbe8791 (patch) | |
tree | 5824267398234e7f67997df94ce6c6c4d383e435 /test/tsan | |
parent | 4bb8e9c39f9a23b3ed9a430beefbb5df8923f69f (diff) |
Update debug_external.cc testcase to use TSan-invisible barriers to reduce flakiness.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@298707 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tsan')
-rw-r--r-- | test/tsan/Darwin/debug_external.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/test/tsan/Darwin/debug_external.cc b/test/tsan/Darwin/debug_external.cc index ac05a01c4..217690fc5 100644 --- a/test/tsan/Darwin/debug_external.cc +++ b/test/tsan/Darwin/debug_external.cc @@ -6,6 +6,8 @@ #include <stdlib.h> #include <string.h> +#include "../test.h" + extern "C" { void __tsan_on_report(void *report); int __tsan_get_report_loc(void *report, unsigned long idx, const char **type, @@ -20,11 +22,13 @@ void __tsan_external_assign_tag(void *addr, void *tag); } void *Thread(void *arg) { + barrier_wait(&barrier); *((long *)arg) = 42; return NULL; } int main() { + barrier_init(&barrier, 2); void *tag = __tsan_external_register_tag("MyObject"); long *obj = (long *)malloc(sizeof(long)); fprintf(stderr, "obj = %p\n", obj); @@ -34,6 +38,7 @@ int main() { pthread_t t; pthread_create(&t, 0, Thread, obj); *obj = 41; + barrier_wait(&barrier); pthread_join(t, 0); fprintf(stderr, "Done.\n"); return 0; |