Opened 4 years ago
Closed 4 years ago
#11249 closed defect (fixed)
potential hang with -j and --showtime= when using threads
| Reported by: | kidkat | Owned by: | kidkat |
|---|---|---|---|
| Priority: | Normal | Milestone: | 2.9 |
| Component: | Other | Version: | |
| Keywords: | Cc: |
Description
A Visual Studio build will hang from time to time when run with -j. A thread waits for logForwarder->mFileSync and thus does not finish.
Here are the stack dumps:
> [Inline Frame] cppcheck-core.dll!std::vector<std::pair<std::string,TimerResultsData>,std::allocator<std::pair<std::string,TimerResultsData>>>::{ctor}(std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<std::string const ,TimerResultsData>>>>) Line 529 C++
cppcheck-core.dll!TimerResults::showResults(SHOWTIME_MODES mode) Line 50 C++
cppcheck-core.dll!CppCheck::~CppCheck() Line 364 C++
cppcheck.exe!ThreadExecutor::threadProc(ThreadExecutor::SyncLogForwarder * logForwarder) Line 195 C++
> [Inline Frame] cppcheck-core.dll!std::map<std::string,TimerResultsData,std::less<std::string>,std::allocator<std::pair<std::string const ,TimerResultsData>>>::operator[](const std::string &) Line 323 C++ cppcheck-core.dll!TimerResults::addResults(const std::string & str, long clocks) Line 71 C++ cppcheck-core.dll!Timer::stop() Line 106 C++ cppcheck-core.dll!Timer::~Timer() Line 88 C++ cppcheck-core.dll!Tokenizer::simplifyTokenList1(const char * FileName) Line 4958 C++ cppcheck-core.dll!Tokenizer::simplifyTokens1(const std::string & configuration) Line 2771 C++ cppcheck-core.dll!CppCheck::checkFile(const std::string & filename, const std::string & cfgname, std::basic_istream<char,std::char_traits<char>> & fileStream) Line 857 C++ cppcheck-core.dll!CppCheck::check(const std::string & path) Line 536 C++ cppcheck.exe!ThreadExecutor::threadProc(ThreadExecutor::SyncLogForwarder * logForwarder) Line 177 C++
[Inline Frame] cppcheck.exe!std::_Mutex_base::lock() Line 50 C++ > cppcheck.exe!ThreadExecutor::threadProc(ThreadExecutor::SyncLogForwarder * logForwarder) Line 187 C++
> [Inline Frame] cppcheck.exe!std::_State_manager<unsigned int>::_Get_value() Line 774 C++ [Inline Frame] cppcheck.exe!std::future<unsigned int>::get() Line 884 C++ [Inline Frame] cppcheck.exe!ThreadExecutor::check::__l2::<lambda_94354ea4d7b6cc94a99a1ba8e84816cb>::operator()(unsigned int) Line 145 C++ [Inline Frame] cppcheck.exe!std::accumulate(const std::_Vector_iterator<std::_Vector_val<std::_Simple_types<std::future<unsigned int>>>> _Val, const std::_Vector_iterator<std::_Vector_val<std::_Simple_types<std::future<unsigned int>>>>) Line 34 C++ cppcheck.exe!ThreadExecutor::check() Line 144 C++ cppcheck.exe!CppCheckExecutor::check_internal(CppCheck & cppcheck) Line 1001 C++ cppcheck.exe!CppCheckExecutor::check(int argc, const char * const * argv) Line 260 C++ cppcheck.exe!main(int argc, char * * argv) Line 111 C++
It appears it is related to the static TimerResults s_timerResults which are accessed from multiple threads without synchronization.
Change History (3)
comment:1 by , 4 years ago
comment:2 by , 4 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
| Summary: | deadlock with -j in Visual Studio build → potential hang with -j and --showtime= when using threads |
comment:3 by , 4 years ago
| Milestone: | → 2.9 |
|---|---|
| Resolution: | → fixed |
| Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Running
TestThreadExecutor::many_threadswithshowtimeand TSAN reports the following:WARNING: ThreadSanitizer: data race (pid=25546) Read of size 8 at 0x7b14000425b8 by thread T20: #0 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/basic_string.h:1063:16 (testrunner+0x8f90e5) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #1 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/basic_string.h:3143:33 (testrunner+0x8f90e5) #2 bool std::operator<<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/basic_string.h:3693:20 (testrunner+0x8f90e5) #3 std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_function.h:408:20 (testrunner+0x8f90e5) #4 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_M_lower_bound(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >*, std::_Rb_tree_node_base*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:1951:7 (testrunner+0x8f90e5) #5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:1270:16 (testrunner+0x8f90e5) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TimerResultsData, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_map.h:1307:21 (testrunner+0x8f90e5) #7 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TimerResultsData, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_map.h:507:17 (testrunner+0x8f90e5) #8 TimerResults::addResults(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long) /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:70:5 (testrunner+0x8f8bf9) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #9 Timer::stop() /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:101:32 (testrunner+0x8f8f5e) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #10 Timer::~Timer() /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:87:5 (testrunner+0x8f8db8) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #11 CppCheck::checkFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::istream&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:741:9 (testrunner+0x7a2fd5) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #12 CppCheck::check(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:536:12 (testrunner+0x799dd4) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #13 ThreadExecutor::threadProc(ThreadExecutor::SyncLogForwarder*) /mnt/s/GitHub/cppcheck-fw/cli/threadexecutor.cpp:177:35 (testrunner+0xa5b890) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #14 unsigned int std::__invoke_impl<unsigned int, unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::__invoke_other, unsigned int (*&&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (testrunner+0xa5d6bb) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #15 std::__invoke_result<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>::type std::__invoke<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(unsigned int (*&&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5d6bb) #16 unsigned int std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:252:13 (testrunner+0xa5d6bb) #17 std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:259:11 (testrunner+0xa5d6bb) #18 std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1387:27 (testrunner+0xa5d6bb) #19 std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter> std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (testrunner+0xa5d5be) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #20 std::enable_if<__and_<std::__not_<std::is_void<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> > >, std::is_convertible<std::__invoke_result<std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>::type, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> > >::value, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> >::type std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:142:14 (testrunner+0xa5d5be) #21 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (testrunner+0xa5d5be) #22 std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (testrunner+0xa5d43f) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #23 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:572:27 (testrunner+0xa5d43f) #24 void std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:74:14 (testrunner+0xa5d579) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #25 std::__invoke_result<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>::type std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5d579) #26 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:852:4 (testrunner+0xa5d579) #27 std::once_flag::_Prepare_execution::_Prepare_execution<void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::'lambda'()::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:788:21 (testrunner+0xa5d579) #28 std::once_flag::_Prepare_execution::_Prepare_execution<void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::'lambda'()::__invoke() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:788:16 (testrunner+0xa5d579) #29 pthread_once <null> (testrunner+0x173f0a) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #30 __gthread_once(int*, void (*)()) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:700:12 (testrunner+0xa5d1a7) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #31 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:859:21 (testrunner+0xa5d1a7) #32 std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:412:2 (testrunner+0xa5d1a7) #33 std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1749:6 (testrunner+0xa5c970) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #34 void std::__invoke_impl<void, void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>(std::__invoke_memfun_deref, void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*&&)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:74:14 (testrunner+0xa5da31) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #35 std::__invoke_result<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>::type std::__invoke<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>(void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*&&)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5da31) #36 void std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:252:13 (testrunner+0xa5da31) #37 std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:259:11 (testrunner+0xa5da31) #38 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:210:13 (testrunner+0xa5da31) #39 <null> <null> (libstdc++.so.6+0xd49c2) (BuildId: 3e56005e70ae04b58b8ac895897f60bfb4bd70f0) Previous write of size 8 at 0x7b14000425b8 by thread T19: #0 operator new(unsigned long) <null> (testrunner+0x1f0b96) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #1 std::__new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::allocate(unsigned long, void const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/new_allocator.h:137:27 (testrunner+0x8fb470) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >&, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/alloc_traits.h:464:20 (testrunner+0x8fb470) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_M_get_node() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:561:16 (testrunner+0x8fb470) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:611:23 (testrunner+0x8fb470) #5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_Auto_node::_Auto_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >&, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:1636:18 (testrunner+0x8fb470) #6 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:2461:13 (testrunner+0x8fb470) #7 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TimerResultsData, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_map.h:511:15 (testrunner+0x8f9214) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #8 TimerResults::addResults(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long) /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:70:5 (testrunner+0x8f8bf9) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #9 Timer::stop() /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:101:32 (testrunner+0x8f8f5e) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #10 Timer::~Timer() /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:87:5 (testrunner+0x8f8db8) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #11 CppCheck::checkNormalTokens(Tokenizer const&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:1028:5 (testrunner+0x79e5c3) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #12 CppCheck::checkFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::istream&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:889:17 (testrunner+0x7a4ff9) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #13 CppCheck::check(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:536:12 (testrunner+0x799dd4) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #14 ThreadExecutor::threadProc(ThreadExecutor::SyncLogForwarder*) /mnt/s/GitHub/cppcheck-fw/cli/threadexecutor.cpp:177:35 (testrunner+0xa5b890) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #15 unsigned int std::__invoke_impl<unsigned int, unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::__invoke_other, unsigned int (*&&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (testrunner+0xa5d6bb) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #16 std::__invoke_result<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>::type std::__invoke<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(unsigned int (*&&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5d6bb) #17 unsigned int std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:252:13 (testrunner+0xa5d6bb) #18 std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:259:11 (testrunner+0xa5d6bb) #19 std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1387:27 (testrunner+0xa5d6bb) #20 std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter> std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (testrunner+0xa5d5be) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #21 std::enable_if<__and_<std::__not_<std::is_void<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> > >, std::is_convertible<std::__invoke_result<std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>::type, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> > >::value, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> >::type std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:142:14 (testrunner+0xa5d5be) #22 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (testrunner+0xa5d5be) #23 std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (testrunner+0xa5d43f) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #24 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:572:27 (testrunner+0xa5d43f) #25 void std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:74:14 (testrunner+0xa5d579) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #26 std::__invoke_result<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>::type std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5d579) #27 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:852:4 (testrunner+0xa5d579) #28 std::once_flag::_Prepare_execution::_Prepare_execution<void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::'lambda'()::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:788:21 (testrunner+0xa5d579) #29 std::once_flag::_Prepare_execution::_Prepare_execution<void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::'lambda'()::__invoke() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:788:16 (testrunner+0xa5d579) #30 pthread_once <null> (testrunner+0x173f0a) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #31 __gthread_once(int*, void (*)()) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:700:12 (testrunner+0xa5d1a7) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #32 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:859:21 (testrunner+0xa5d1a7) #33 std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:412:2 (testrunner+0xa5d1a7) #34 std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1749:6 (testrunner+0xa5c970) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #35 void std::__invoke_impl<void, void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>(std::__invoke_memfun_deref, void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*&&)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:74:14 (testrunner+0xa5da31) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #36 std::__invoke_result<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>::type std::__invoke<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>(void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*&&)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5da31) #37 void std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:252:13 (testrunner+0xa5da31) #38 std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:259:11 (testrunner+0xa5da31) #39 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:210:13 (testrunner+0xa5da31) #40 <null> <null> (libstdc++.so.6+0xd49c2) (BuildId: 3e56005e70ae04b58b8ac895897f60bfb4bd70f0) Location is heap block of size 80 at 0x7b1400042590 allocated by thread T19: #0 operator new(unsigned long) <null> (testrunner+0x1f0b96) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #1 std::__new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::allocate(unsigned long, void const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/new_allocator.h:137:27 (testrunner+0x8fb470) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >&, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/alloc_traits.h:464:20 (testrunner+0x8fb470) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_M_get_node() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:561:16 (testrunner+0x8fb470) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:611:23 (testrunner+0x8fb470) #5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_Auto_node::_Auto_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >&, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:1636:18 (testrunner+0x8fb470) #6 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:2461:13 (testrunner+0x8fb470) #7 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TimerResultsData, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, TimerResultsData> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_map.h:511:15 (testrunner+0x8f9214) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #8 TimerResults::addResults(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long) /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:70:5 (testrunner+0x8f8bf9) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #9 Timer::stop() /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:101:32 (testrunner+0x8f8f5e) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #10 Timer::~Timer() /mnt/s/GitHub/cppcheck-fw/lib/timer.cpp:87:5 (testrunner+0x8f8db8) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #11 CppCheck::checkNormalTokens(Tokenizer const&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:1028:5 (testrunner+0x79e5c3) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #12 CppCheck::checkFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::istream&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:889:17 (testrunner+0x7a4ff9) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #13 CppCheck::check(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /mnt/s/GitHub/cppcheck-fw/lib/cppcheck.cpp:536:12 (testrunner+0x799dd4) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #14 ThreadExecutor::threadProc(ThreadExecutor::SyncLogForwarder*) /mnt/s/GitHub/cppcheck-fw/cli/threadexecutor.cpp:177:35 (testrunner+0xa5b890) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #15 unsigned int std::__invoke_impl<unsigned int, unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::__invoke_other, unsigned int (*&&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (testrunner+0xa5d6bb) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #16 std::__invoke_result<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>::type std::__invoke<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(unsigned int (*&&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5d6bb) #17 unsigned int std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:252:13 (testrunner+0xa5d6bb) #18 std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:259:11 (testrunner+0xa5d6bb) #19 std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1387:27 (testrunner+0xa5d6bb) #20 std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter> std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (testrunner+0xa5d5be) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #21 std::enable_if<__and_<std::__not_<std::is_void<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> > >, std::is_convertible<std::__invoke_result<std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>::type, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> > >::value, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> >::type std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:142:14 (testrunner+0xa5d5be) #22 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<unsigned int>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (testrunner+0xa5d5be) #23 std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (testrunner+0xa5d43f) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #24 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:572:27 (testrunner+0xa5d43f) #25 void std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:74:14 (testrunner+0xa5d579) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #26 std::__invoke_result<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>::type std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5d579) #27 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:852:4 (testrunner+0xa5d579) #28 std::once_flag::_Prepare_execution::_Prepare_execution<void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::'lambda'()::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:788:21 (testrunner+0xa5d579) #29 std::once_flag::_Prepare_execution::_Prepare_execution<void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::'lambda'()::__invoke() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:788:16 (testrunner+0xa5d579) #30 pthread_once <null> (testrunner+0x173f0a) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #31 __gthread_once(int*, void (*)()) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:700:12 (testrunner+0xa5d1a7) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #32 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:859:21 (testrunner+0xa5d1a7) #33 std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:412:2 (testrunner+0xa5d1a7) #34 std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1749:6 (testrunner+0xa5c970) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #35 void std::__invoke_impl<void, void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>(std::__invoke_memfun_deref, void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*&&)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:74:14 (testrunner+0xa5da31) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #36 std::__invoke_result<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>::type std::__invoke<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*>(void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*&&)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (testrunner+0xa5da31) #37 void std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:252:13 (testrunner+0xa5da31) #38 std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:259:11 (testrunner+0xa5da31) #39 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>::*)(), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:210:13 (testrunner+0xa5da31) #40 <null> <null> (libstdc++.so.6+0xd49c2) (BuildId: 3e56005e70ae04b58b8ac895897f60bfb4bd70f0) Thread T20 (tid=25567, running) created by main thread at: #0 pthread_create <null> (testrunner+0x170bdd) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xd4ccb) (BuildId: 3e56005e70ae04b58b8ac895897f60bfb4bd70f0) #2 void std::_Construct<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_construct.h:119:25 (testrunner+0xa5bc70) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #3 void std::allocator_traits<std::allocator<void> >::construct<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::allocator<void>&, std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/alloc_traits.h:635:4 (testrunner+0xa5bc70) #4 std::_Sp_counted_ptr_inplace<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:604:4 (testrunner+0xa5bc70) #5 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&, std::_Sp_alloc_shared_tag<std::allocator<void> >, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:972:6 (testrunner+0xa5bc70) #6 std::__shared_ptr<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::_Sp_alloc_shared_tag<std::allocator<void> >, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:1712:14 (testrunner+0xa5bc70) #7 std::shared_ptr<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::shared_ptr<std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::_Sp_alloc_shared_tag<std::allocator<void> >, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr.h:464:4 (testrunner+0xa5bc70) #8 std::shared_ptr<std::enable_if<!(is_array<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::value), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::type> std::make_shared<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr.h:1009:14 (testrunner+0xa5bc70) #9 std::future<std::__invoke_result<std::decay<unsigned int (&)(ThreadExecutor::SyncLogForwarder*)>::type, std::decay<ThreadExecutor::SyncLogForwarder*>::type>::type> std::async<unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::launch, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1780:18 (testrunner+0xa5bc70) #10 ThreadExecutor::check() /mnt/s/GitHub/cppcheck-fw/cli/threadexecutor.cpp:136:40 (testrunner+0xa5b047) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #11 TestThreadExecutor::check(unsigned int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SHOWTIME_MODES) /mnt/s/GitHub/cppcheck-fw/test/testthreadexecutor.cpp:63:9 (testrunner+0x4fc8a2) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #12 TestThreadExecutor::many_threads_showtime() /mnt/s/GitHub/cppcheck-fw/test/testthreadexecutor.cpp:102:9 (testrunner+0x4fbed7) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #13 TestThreadExecutor::run() /mnt/s/GitHub/cppcheck-fw/test/testthreadexecutor.cpp:71:9 (testrunner+0x4fba08) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #14 TestFixture::run(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /mnt/s/GitHub/cppcheck-fw/test/testsuite.cpp:326:9 (testrunner+0x480775) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #15 TestFixture::runTests(options const&) /mnt/s/GitHub/cppcheck-fw/test/testsuite.cpp:350:23 (testrunner+0x480e64) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #16 main /mnt/s/GitHub/cppcheck-fw/test/testrunner.cpp:51:42 (testrunner+0x414848) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) Thread T19 (tid=25566, running) created by main thread at: #0 pthread_create <null> (testrunner+0x170bdd) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xd4ccb) (BuildId: 3e56005e70ae04b58b8ac895897f60bfb4bd70f0) #2 void std::_Construct<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_construct.h:119:25 (testrunner+0xa5bc70) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #3 void std::allocator_traits<std::allocator<void> >::construct<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::allocator<void>&, std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/alloc_traits.h:635:4 (testrunner+0xa5bc70) #4 std::_Sp_counted_ptr_inplace<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:604:4 (testrunner+0xa5bc70) #5 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>*&, std::_Sp_alloc_shared_tag<std::allocator<void> >, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:972:6 (testrunner+0xa5bc70) #6 std::__shared_ptr<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::_Sp_alloc_shared_tag<std::allocator<void> >, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:1712:14 (testrunner+0xa5bc70) #7 std::shared_ptr<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::shared_ptr<std::allocator<void>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::_Sp_alloc_shared_tag<std::allocator<void> >, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr.h:464:4 (testrunner+0xa5bc70) #8 std::shared_ptr<std::enable_if<!(is_array<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::value), std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int> >::type> std::make_shared<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<unsigned int (*)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*> >, unsigned int>, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr.h:1009:14 (testrunner+0xa5bc70) #9 std::future<std::__invoke_result<std::decay<unsigned int (&)(ThreadExecutor::SyncLogForwarder*)>::type, std::decay<ThreadExecutor::SyncLogForwarder*>::type>::type> std::async<unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*>(std::launch, unsigned int (&)(ThreadExecutor::SyncLogForwarder*), ThreadExecutor::SyncLogForwarder*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/future:1780:18 (testrunner+0xa5bc70) #10 ThreadExecutor::check() /mnt/s/GitHub/cppcheck-fw/cli/threadexecutor.cpp:136:40 (testrunner+0xa5b047) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #11 TestThreadExecutor::check(unsigned int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SHOWTIME_MODES) /mnt/s/GitHub/cppcheck-fw/test/testthreadexecutor.cpp:63:9 (testrunner+0x4fc8a2) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #12 TestThreadExecutor::many_threads_showtime() /mnt/s/GitHub/cppcheck-fw/test/testthreadexecutor.cpp:102:9 (testrunner+0x4fbed7) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #13 TestThreadExecutor::run() /mnt/s/GitHub/cppcheck-fw/test/testthreadexecutor.cpp:71:9 (testrunner+0x4fba08) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #14 TestFixture::run(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /mnt/s/GitHub/cppcheck-fw/test/testsuite.cpp:326:9 (testrunner+0x480775) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #15 TestFixture::runTests(options const&) /mnt/s/GitHub/cppcheck-fw/test/testsuite.cpp:350:23 (testrunner+0x480e64) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) #16 main /mnt/s/GitHub/cppcheck-fw/test/testrunner.cpp:51:42 (testrunner+0x414848) (BuildId: d8670eec4ddbb3677167baf764bd6743e9d805c1) SUMMARY: ThreadSanitizer: data race /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/basic_string.h:1063:16 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const