1*7dbc1d84SVitaly Buka // This file is distributed under the University of Illinois Open Source 2*7dbc1d84SVitaly Buka // License. See LICENSE.TXT for details. 3*7dbc1d84SVitaly Buka 4*7dbc1d84SVitaly Buka // Check that allocation tracing from different threads does not cause 5*7dbc1d84SVitaly Buka // interleaving of stack traces. 6*7dbc1d84SVitaly Buka #include <assert.h> 7*7dbc1d84SVitaly Buka #include <cstddef> 8*7dbc1d84SVitaly Buka #include <cstdint> 9*7dbc1d84SVitaly Buka #include <cstring> 10*7dbc1d84SVitaly Buka #include <thread> 11*7dbc1d84SVitaly Buka 12*7dbc1d84SVitaly Buka extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 13*7dbc1d84SVitaly Buka auto C = [&] { 14*7dbc1d84SVitaly Buka volatile void *a = malloc(5639); 15*7dbc1d84SVitaly Buka free((void *)a); 16*7dbc1d84SVitaly Buka }; 17*7dbc1d84SVitaly Buka std::thread T[] = {std::thread(C), std::thread(C), std::thread(C), 18*7dbc1d84SVitaly Buka std::thread(C), std::thread(C), std::thread(C)}; 19*7dbc1d84SVitaly Buka for (auto &X : T) 20*7dbc1d84SVitaly Buka X.join(); 21*7dbc1d84SVitaly Buka return 0; 22*7dbc1d84SVitaly Buka } 23