17dbc1d84SVitaly Buka // This file is distributed under the University of Illinois Open Source 27dbc1d84SVitaly Buka // License. See LICENSE.TXT for details. 37dbc1d84SVitaly Buka 47dbc1d84SVitaly Buka // Check that allocation tracing from different threads does not cause 57dbc1d84SVitaly Buka // interleaving of stack traces. 67dbc1d84SVitaly Buka #include <assert.h> 77dbc1d84SVitaly Buka #include <cstddef> 87dbc1d84SVitaly Buka #include <cstdint> 97dbc1d84SVitaly Buka #include <cstring> 10*e81e9441SKamil Rytarowski #include <cstdlib> 117dbc1d84SVitaly Buka #include <thread> 127dbc1d84SVitaly Buka 137dbc1d84SVitaly Buka extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 147dbc1d84SVitaly Buka auto C = [&] { 157dbc1d84SVitaly Buka volatile void *a = malloc(5639); 167dbc1d84SVitaly Buka free((void *)a); 177dbc1d84SVitaly Buka }; 187dbc1d84SVitaly Buka std::thread T[] = {std::thread(C), std::thread(C), std::thread(C), 197dbc1d84SVitaly Buka std::thread(C), std::thread(C), std::thread(C)}; 207dbc1d84SVitaly Buka for (auto &X : T) 217dbc1d84SVitaly Buka X.join(); 227dbc1d84SVitaly Buka return 0; 237dbc1d84SVitaly Buka } 24