1 | // Check that sanitizers on OS X crash the process by default (i.e. |
2 | // abort_on_error=1). See also Linux/abort_on_error.cpp. |
3 | |
4 | // RUN: %clangxx -DUSING_%tool_name %s -o %t |
5 | |
6 | // Intentionally don't inherit the default options. |
7 | // RUN: env %tool_options='' TSAN_OPTIONS=ignore_interceptors_accesses=0 not --crash %run %t 2>&1 |
8 | |
9 | // When we use lit's default options, we shouldn't crash. |
10 | // RUN: not %run %t 2>&1 |
11 | |
12 | // Leak detection isn't treated as an error so `abort_on_error=1` doesn't work. |
13 | // UNSUPPORTED: lsan |
14 | |
15 | int global; |
16 | |
17 | int main() { |
18 | #if defined(USING_ubsan) |
19 | volatile int *null = 0; |
20 | *null = 0; |
21 | #else |
22 | volatile int *a = new int[100]; |
23 | delete[] a; |
24 | global = a[0]; // use-after-free: triggers ASan/TSan report. |
25 | #endif |
26 | return 0; |
27 | } |
28 | |