| 1 | // Test quarantine_size_mb (and the deprecated quarantine_size) |
| 2 | // RUN: %clangxx_asan %s -o %t |
| 3 | // RUN: %env_asan_opts=quarantine_size=10485760:verbosity=1:hard_rss_limit_mb=50 %run %t 2>&1 | FileCheck %s --check-prefix=Q10 |
| 4 | // RUN: %env_asan_opts=quarantine_size_mb=10:verbosity=1:hard_rss_limit_mb=50 %run %t 2>&1 | FileCheck %s --check-prefix=Q10 |
| 5 | // RUN: %env_asan_opts=quarantine_size_mb=10:quarantine_size=20:verbosity=1 not %run %t 2>&1 | FileCheck %s --check-prefix=BOTH |
| 6 | // RUN: %env_asan_opts=quarantine_size_mb=1000:hard_rss_limit_mb=50 not %run %t 2>&1 | FileCheck %s --check-prefix=RSS_LIMIT |
| 7 | // RUN: %env_asan_opts=hard_rss_limit_mb=20 not %run %t 2>&1 | FileCheck %s --check-prefix=RSS_LIMIT |
| 8 | |
| 9 | // https://github.com/google/sanitizers/issues/981 |
| 10 | // UNSUPPORTED: android-26 |
| 11 | |
| 12 | #include <string.h> |
| 13 | char *g; |
| 14 | |
| 15 | static const int kNumAllocs = 1 << 11; |
| 16 | static const int kAllocSize = 1 << 20; |
| 17 | |
| 18 | int main() { |
| 19 | for (int i = 0; i < kNumAllocs; i++) { |
| 20 | g = new char[kAllocSize]; |
| 21 | memset(s: g, c: -1, n: kAllocSize); |
| 22 | delete [] (g); |
| 23 | } |
| 24 | } |
| 25 | |
| 26 | // Q10: quarantine_size_mb=10M |
| 27 | // BOTH: please use either 'quarantine_size' (deprecated) or quarantine_size_mb, but not both |
| 28 | // RSS_LIMIT: AddressSanitizer: hard rss limit exhausted |
| 29 | |