1*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 2*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 3*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 47dbc1d84SVitaly Buka 57dbc1d84SVitaly Buka // Check that allocation tracing from different threads does not cause 67dbc1d84SVitaly Buka // interleaving of stack traces. 77dbc1d84SVitaly Buka #include <assert.h> 87dbc1d84SVitaly Buka #include <cstddef> 97dbc1d84SVitaly Buka #include <cstdint> 107dbc1d84SVitaly Buka #include <cstring> 11e81e9441SKamil Rytarowski #include <cstdlib> 127dbc1d84SVitaly Buka #include <thread> 137dbc1d84SVitaly Buka LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)147dbc1d84SVitaly Bukaextern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 157dbc1d84SVitaly Buka auto C = [&] { 1622a1afd9SMatt Morehouse void * volatile a = malloc(5639); 177dbc1d84SVitaly Buka free((void *)a); 187dbc1d84SVitaly Buka }; 197dbc1d84SVitaly Buka std::thread T[] = {std::thread(C), std::thread(C), std::thread(C), 207dbc1d84SVitaly Buka std::thread(C), std::thread(C), std::thread(C)}; 217dbc1d84SVitaly Buka for (auto &X : T) 227dbc1d84SVitaly Buka X.join(); 237dbc1d84SVitaly Buka return 0; 247dbc1d84SVitaly Buka } 25