| // RUN: %target-swiftc_driver %s -target %sanitizers-target-triple -g -sanitize=thread -o %t_tsan-binary |
| // RUN: %target-codesign %t_tsan-binary |
| // RUN: %target-run %t_tsan-binary 2>&1 | %FileCheck %s |
| // REQUIRES: executable_test |
| // REQUIRES: tsan_runtime |
| // UNSUPPORTED: OS=tvos |
| |
| // FIXME: This should be covered by "tsan_runtime"; older versions of Apple OSs |
| // don't support TSan. |
| // UNSUPPORTED: remote_run |
| |
| import Foundation |
| |
| let sem = DispatchSemaphore(value: 0) |
| |
| class T1: Thread { |
| override func main() { |
| var oneEmptyArray: [[String:String]] = [] |
| oneEmptyArray.append(contentsOf: []) |
| sem.signal() |
| } |
| } |
| let t1 = T1() |
| t1.start() |
| |
| class T2: Thread { |
| override func main() { |
| var aCompletelyUnrelatedOtherEmptyArray: [[Double:Double]] = [] |
| aCompletelyUnrelatedOtherEmptyArray.append(contentsOf: []) |
| sem.signal() |
| } |
| } |
| let t2 = T2() |
| t2.start() |
| |
| sem.wait() |
| sem.wait() |
| print("Done!") |
| |
| // CHECK: Done! |