thread_end_with_ignore.cc revision 2d1fdb26e458c4ddc04155c1d421bced3ba90cd0
167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// RUN: %clangxx_tsan -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s 267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#include <pthread.h> 367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#include <stdio.h> 467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe 567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboeextern "C" void AnnotateIgnoreReadsBegin(const char *f, int l); 667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe 767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboevoid *Thread(void *x) { 867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe AnnotateIgnoreReadsBegin("", 0); 967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe return 0; 1067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe} 1167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe 1267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboeint main() { 1367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe pthread_t t; 1467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe pthread_create(&t, 0, Thread, 0); 1567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe pthread_join(t, 0); 1667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe} 1767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe 1867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: ThreadSanitizer: thread T1 finished with ignores enabled, created at: 1967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: #0 pthread_create 2067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: #1 main 2167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: Ignore was enabled at: 2267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: #0 AnnotateIgnoreReadsBegin 2367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: #1 Thread 2467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe 2567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe