[TSan] Add a test case for r209939

llvm-svn: 209940
This commit is contained in:
Alexey Samsonov 2014-05-31 00:12:20 +00:00
parent d3828b8240
commit 5c8ce21a6c
2 changed files with 47 additions and 0 deletions

View File

@ -1 +1,2 @@
fun:*Blacklisted_Thread2*
fun:*CallTouchGlobal*

View File

@ -0,0 +1,46 @@
// Test that blacklisted functions are still contained in the stack trace.
// RUN: %clangxx_tsan -O1 %s -fsanitize-blacklist=%p/Helpers/blacklist.txt -o %t
// RUN: %deflake %run %t 2>&1 | FileCheck %s
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
int Global;
void *Thread1(void *x) {
sleep(1);
// CHECK: ThreadSanitizer: data race
// CHECK: Write of size 4
// CHECK: #0 Thread1{{.*}}blacklist2.cc:[[@LINE+1]]
Global++;
return NULL;
}
void TouchGlobal() {
// CHECK: Previous write of size 4
// CHECK: #0 TouchGlobal(){{.*}}blacklist2.cc:[[@LINE+1]]
Global--;
}
void CallTouchGlobal() {
// CHECK: #1 CallTouchGlobal{{.*}}blacklist2.cc:[[@LINE+1]]
TouchGlobal();
}
void *Blacklisted_Thread2(void *x) {
Global--;
// CHECK: #2 Blacklisted_Thread2{{.*}}blacklist2.cc:[[@LINE+1]]
CallTouchGlobal();
return NULL;
}
int main() {
pthread_t t[2];
pthread_create(&t[0], NULL, Thread1, NULL);
pthread_create(&t[1], NULL, Blacklisted_Thread2, NULL);
pthread_join(t[0], NULL);
pthread_join(t[1], NULL);
printf("PASS\n");
return 0;
}