brintos

brintos / llvm-project-archived public Read only

0
0
Text · 789 B · 006716f Raw
32 lines · plain
1// RUN: %clangxx_tsan %s -o %t -framework Foundation -fobjc-arc2// RUN:                                   not %run %t 2>&1 | FileCheck %s3// RUN: %env_tsan_opts=detect_deadlocks=1 not %run %t 2>&1 | FileCheck %s4// RUN: %env_tsan_opts=detect_deadlocks=0     %run %t 2>&1 | FileCheck %s --check-prefix=DISABLED5 6#import <Foundation/Foundation.h>7 8int main() {9  @autoreleasepool {10    NSObject* obj1 = [NSObject new];11    NSObject* obj2 = [NSObject new];12 13    // obj1 -> obj214    @synchronized(obj1) {15      @synchronized(obj2) {16      }17    }18 19    // obj1 -> obj120    @synchronized(obj2) {21      @synchronized(obj1) {22// CHECK: ThreadSanitizer: lock-order-inversion (potential deadlock)23      }24    }25  }26 27  NSLog(@"PASS");28// DISABLED-NOT: ThreadSanitizer29// DISABLED: PASS30  return 0;31}32