// RUN: %clangxx_lsan -O2 %s --std=c++14 -o %t && %run %t
#include <atomic>
#include <memory>
#include <sanitizer/lsan_interface.h>
#include <thread>
#include <vector>
std::atomic<bool> done;
void foo() {
std::unique_ptr<char[]> mem;
while (!done)
mem.reset(new char[1000000]);
}
int main() {
std::vector<std::thread> threads;
for (int i = 0; i < 10; ++i)
threads.emplace_back(foo);
for (int i = 0; i < 100; ++i)
__lsan_do_recoverable_leak_check();
done = true;
for (auto &t : threads)
t.join();
return 0;
}