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 Buka extern "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