Skip to content

Instantly share code, notes, and snippets.

@Naios
Last active August 29, 2015 14:25
Show Gist options
  • Save Naios/440983e9c6c9971b6aa3 to your computer and use it in GitHub Desktop.
Save Naios/440983e9c6c9971b6aa3 to your computer and use it in GitHub Desktop.
==7472== Helgrind, a thread error detector
==7472== Copyright (C) 2007-2013, and GNU GPL'd, by OpenWorks LLP et al.
==7472== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==7472== Command: build/continue_test
==7472== Parent PID: 7471
==7472==
==7472== ---Thread-Announcement------------------------------------------
==7472==
==7472== Thread #1 is the program's root thread
==7472==
==7472== ---Thread-Announcement------------------------------------------
==7472==
==7472== Thread #3 was created
==7472== at 0x598FEAE: clone (clone.S:74)
==7472== by 0x4E44179: create_thread (createthread.c:102)
==7472== by 0x4E45E20: pthread_create@@GLIBC_2.2.5 (pthread_create.c:677)
==7472== by 0x4C31E3D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x5116F68: std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x472355: std::thread::thread<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (thread:138)
==7472== by 0x4722C5: void __gnu_cxx::new_allocator<std::thread>::construct<std::thread, DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(std::thread*, DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (new_allocator.h:120)
==7472== by 0x47226C: _ZNSt16allocator_traitsISaISt6threadEE12_S_constructIS0_JZN14DispatcherPoolC1EjEUlvE_EEENSt9enable_ifIXsr6__and_INS2_18__construct_helperIT_JDpT0_EE4typeEEE5valueEvE4typeERS1_PS8_DpOS9_ (alloc_traits.h:253)
==7472== by 0x4717FF: _ZNSt16allocator_traitsISaISt6threadEE9constructIS0_JZN14DispatcherPoolC1EjEUlvE_EEEDTcl12_S_constructfp_fp0_spclsr3stdE7forwardIT0_Efp1_EEERS1_PT_DpOS6_ (alloc_traits.h:399)
==7472== by 0x4718A9: void std::vector<std::thread, std::allocator<std::thread> >::_M_emplace_back_aux<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (vector.tcc:416)
==7472== by 0x4717AF: void std::vector<std::thread, std::allocator<std::thread> >::emplace_back<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (vector.tcc:101)
==7472== by 0x453953: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:295)
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during write of size 8 at 0x5C56CA0 by thread #1
==7472== Locks held: none
==7472== at 0x4573DA: store (atomic_base.h:478)
==7472== by 0x4573DA: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2377)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472==
==7472== This conflicts with a previous read of size 8 by thread #3
==7472== Locks held: none
==7472== at 0x474DF7: load (atomic_base.h:500)
==7472== by 0x474DF7: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2385)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== Address 0x5c56ca0 is 32 bytes inside a block of size 104 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x45A7FD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer, moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>*>(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>*&&) (concurrentqueue.h:3435)
==7472== by 0x45A1B0: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::recycle_or_create_producer(bool, bool&) (concurrentqueue.h:3062)
==7472== by 0x456636: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::get_or_add_implicit_producer() (concurrentqueue.h:3308)
==7472== by 0x4555F8: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1216)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C56CA0 by thread #3
==7472== Locks held: none
==7472== at 0x474DF7: load (atomic_base.h:500)
==7472== by 0x474DF7: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2385)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4C31FD6: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x4E456A9: start_thread (pthread_create.c:333)
==7472== by 0x598FEEC: clone (clone.S:109)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x4573DA: store (atomic_base.h:478)
==7472== by 0x4573DA: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2377)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c56ca0 is 32 bytes inside a block of size 104 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x45A7FD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer, moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>*>(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>*&&) (concurrentqueue.h:3435)
==7472== by 0x45A1B0: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::recycle_or_create_producer(bool, bool&) (concurrentqueue.h:3062)
==7472== by 0x456636: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::get_or_add_implicit_producer() (concurrentqueue.h:3308)
==7472== by 0x4555F8: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1216)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C54F20 by thread #3
==7472== Locks held: none
==7472== at 0x458909: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:175)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x458953: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:177)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f20 is 80 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C54F28 by thread #3
==7472== Locks held: none
==7472== at 0x458910: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:175)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x45895A: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:177)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f28 is 88 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during write of size 8 at 0x5C54F20 by thread #3
==7472== Locks held: none
==7472== at 0x458934: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:176)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x458953: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:177)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f20 is 80 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during write of size 8 at 0x5C54F28 by thread #3
==7472== Locks held: none
==7472== at 0x45893B: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:176)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x45895A: void std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (move.h:177)
==7472== by 0x4588A6: std::function<void ()>::swap(std::function<void ()>&) (functional:2328)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f28 is 88 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C54F30 by thread #3
==7472== Locks held: none
==7472== at 0x458989: void std::swap<bool (*)(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)>(bool (*&)(std::_Any_data&, std::_Any_data const&, std::_Manager_operation), bool (*&)(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)) (move.h:175)
==7472== by 0x4588C3: std::function<void ()>::swap(std::function<void ()>&) (functional:2329)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x45420C: std::_Function_base::_Function_base() (functional:1993)
==7472== by 0x4581AF: std::function<void ()>::function(std::function<void ()>&&) (functional:2202)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f30 is 96 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during write of size 8 at 0x5C54F30 by thread #3
==7472== Locks held: none
==7472== at 0x4589A4: void std::swap<bool (*)(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)>(bool (*&)(std::_Any_data&, std::_Any_data const&, std::_Manager_operation), bool (*&)(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)) (move.h:176)
==7472== by 0x4588C3: std::function<void ()>::swap(std::function<void ()>&) (functional:2329)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x45420C: std::_Function_base::_Function_base() (functional:1993)
==7472== by 0x4581AF: std::function<void ()>::function(std::function<void ()>&&) (functional:2202)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f30 is 96 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C54F38 by thread #3
==7472== Locks held: none
==7472== at 0x4589D9: void std::swap<void (*)(std::_Any_data const&)>(void (*&)(std::_Any_data const&), void (*&)(std::_Any_data const&)) (move.h:175)
==7472== by 0x4588E0: std::function<void ()>::swap(std::function<void ()>&) (functional:2330)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x458A03: void std::swap<void (*)(std::_Any_data const&)>(void (*&)(std::_Any_data const&), void (*&)(std::_Any_data const&)) (move.h:177)
==7472== by 0x4588E0: std::function<void ()>::swap(std::function<void ()>&) (functional:2330)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f38 is 104 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during write of size 8 at 0x5C54F38 by thread #3
==7472== Locks held: none
==7472== at 0x4589F4: void std::swap<void (*)(std::_Any_data const&)>(void (*&)(std::_Any_data const&), void (*&)(std::_Any_data const&)) (move.h:176)
==7472== by 0x4588E0: std::function<void ()>::swap(std::function<void ()>&) (functional:2330)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x4756D2: std::function<void ()>::operator=(std::function<void ()>&&) (functional:2261)
==7472== by 0x475484: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2425)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x458A03: void std::swap<void (*)(std::_Any_data const&)>(void (*&)(std::_Any_data const&), void (*&)(std::_Any_data const&)) (move.h:177)
==7472== by 0x4588E0: std::function<void ()>::swap(std::function<void ()>&) (functional:2330)
==7472== by 0x4581BC: std::function<void ()>::function(std::function<void ()>&&) (functional:2203)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c54f38 is 104 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 4 at 0x5C57684 by thread #3
==7472== Locks held: none
==7472== at 0x44DE62: main::$_11::operator()() const (test.cpp:711)
==7472== by 0x44DC4C: std::_Function_handler<void (), main::$_11>::_M_invoke(std::_Any_data const&) (functional:2039)
==7472== by 0x45D6BD: std::function<void ()>::operator()() const (functional:2439)
==7472== by 0x473503: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:307)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4C31FD6: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x4E456A9: start_thread (pthread_create.c:333)
==7472== by 0x598FEEC: clone (clone.S:109)
==7472== Address 0x5c57684 is 20 bytes inside a block of size 32 alloc'd
==7472== at 0x4C2D520: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x44E581: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&, std::integral_constant<bool, false>) (functional:1955)
==7472== by 0x44DC0F: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&) (functional:1926)
==7472== by 0x44DAB5: std::function<void ()>::function<main::$_11, void>(main::$_11) (functional:2426)
==7472== by 0x44D9E1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 4 at 0x5C57680 by thread #3
==7472== Locks held: none
==7472== at 0x44DEB0: main::$_11::operator()() const (test.cpp:711)
==7472== by 0x44DC4C: std::_Function_handler<void (), main::$_11>::_M_invoke(std::_Any_data const&) (functional:2039)
==7472== by 0x45D6BD: std::function<void ()>::operator()() const (functional:2439)
==7472== by 0x473503: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:307)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4C31FD6: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x4E456A9: start_thread (pthread_create.c:333)
==7472== by 0x598FEEC: clone (clone.S:109)
==7472== Address 0x5c57680 is 16 bytes inside a block of size 32 alloc'd
==7472== at 0x4C2D520: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x44E581: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&, std::integral_constant<bool, false>) (functional:1955)
==7472== by 0x44DC0F: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&) (functional:1926)
==7472== by 0x44DAB5: std::function<void ()>::function<main::$_11, void>(main::$_11) (functional:2426)
==7472== by 0x44D9E1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 4 at 0x5C57688 by thread #3
==7472== Locks held: none
==7472== at 0x44DEF7: main::$_11::operator()() const (test.cpp:711)
==7472== by 0x44DC4C: std::_Function_handler<void (), main::$_11>::_M_invoke(std::_Any_data const&) (functional:2039)
==7472== by 0x45D6BD: std::function<void ()>::operator()() const (functional:2439)
==7472== by 0x473503: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:307)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4C31FD6: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x4E456A9: start_thread (pthread_create.c:333)
==7472== by 0x598FEEC: clone (clone.S:109)
==7472== Address 0x5c57688 is 24 bytes inside a block of size 32 alloc'd
==7472== at 0x4C2D520: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x44E581: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&, std::integral_constant<bool, false>) (functional:1955)
==7472== by 0x44DC0F: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&) (functional:1926)
==7472== by 0x44DAB5: std::function<void ()>::function<main::$_11, void>(main::$_11) (functional:2426)
==7472== by 0x44D9E1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C57670 by thread #3
==7472== Locks held: none
==7472== at 0x44DFA8: main::$_11::operator()() const (test.cpp:714)
==7472== by 0x44DC4C: std::_Function_handler<void (), main::$_11>::_M_invoke(std::_Any_data const&) (functional:2039)
==7472== by 0x45D6BD: std::function<void ()>::operator()() const (functional:2439)
==7472== by 0x473503: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:307)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4C31FD6: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x4E456A9: start_thread (pthread_create.c:333)
==7472== by 0x598FEEC: clone (clone.S:109)
==7472== Address 0x5c57670 is 0 bytes inside a block of size 32 alloc'd
==7472== at 0x4C2D520: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x44E581: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&, std::integral_constant<bool, false>) (functional:1955)
==7472== by 0x44DC0F: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&) (functional:1926)
==7472== by 0x44DAB5: std::function<void ()>::function<main::$_11, void>(main::$_11) (functional:2426)
==7472== by 0x44D9E1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C57678 by thread #3
==7472== Locks held: none
==7472== at 0x44DFB2: main::$_11::operator()() const (test.cpp:714)
==7472== by 0x44DC4C: std::_Function_handler<void (), main::$_11>::_M_invoke(std::_Any_data const&) (functional:2039)
==7472== by 0x45D6BD: std::function<void ()>::operator()() const (functional:2439)
==7472== by 0x473503: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:307)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4C31FD6: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x4E456A9: start_thread (pthread_create.c:333)
==7472== by 0x598FEEC: clone (clone.S:109)
==7472== Address 0x5c57678 is 8 bytes inside a block of size 32 alloc'd
==7472== at 0x4C2D520: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x44E581: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&, std::integral_constant<bool, false>) (functional:1955)
==7472== by 0x44DC0F: std::_Function_base::_Base_manager<main::$_11>::_M_init_functor(std::_Any_data&, main::$_11&&) (functional:1926)
==7472== by 0x44DAB5: std::function<void ()>::function<main::$_11, void>(main::$_11) (functional:2426)
==7472== by 0x44D9E1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ---Thread-Announcement------------------------------------------
==7472==
==7472== Thread #2 was created
==7472== at 0x598FEAE: clone (clone.S:74)
==7472== by 0x4E44179: create_thread (createthread.c:102)
==7472== by 0x4E45E20: pthread_create@@GLIBC_2.2.5 (pthread_create.c:677)
==7472== by 0x4C31E3D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x5116F68: std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x472355: std::thread::thread<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (thread:138)
==7472== by 0x4722C5: void __gnu_cxx::new_allocator<std::thread>::construct<std::thread, DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(std::thread*, DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (new_allocator.h:120)
==7472== by 0x47226C: _ZNSt16allocator_traitsISaISt6threadEE12_S_constructIS0_JZN14DispatcherPoolC1EjEUlvE_EEENSt9enable_ifIXsr6__and_INS2_18__construct_helperIT_JDpT0_EE4typeEEE5valueEvE4typeERS1_PS8_DpOS9_ (alloc_traits.h:253)
==7472== by 0x4717FF: _ZNSt16allocator_traitsISaISt6threadEE9constructIS0_JZN14DispatcherPoolC1EjEUlvE_EEEDTcl12_S_constructfp_fp0_spclsr3stdE7forwardIT0_Efp1_EEERS1_PT_DpOS6_ (alloc_traits.h:399)
==7472== by 0x4718A9: void std::vector<std::thread, std::allocator<std::thread> >::_M_emplace_back_aux<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (vector.tcc:416)
==7472== by 0x4717AF: void std::vector<std::thread, std::allocator<std::thread> >::emplace_back<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}>(DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}&&) (vector.tcc:101)
==7472== by 0x453953: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:295)
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during write of size 8 at 0x5C570D0 by thread #3
==7472== Locks held: none
==7472== at 0x4573DA: store (atomic_base.h:478)
==7472== by 0x4573DA: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2377)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44E128: void DispatcherPool::Dispatch<main::$_11::operator()() const::{lambda()#1}>(main::$_11::operator()() const::{lambda()#1}&&) (test.cpp:342)
==7472== by 0x44DFC8: main::$_11::operator()() const (test.cpp:714)
==7472== by 0x44DC4C: std::_Function_handler<void (), main::$_11>::_M_invoke(std::_Any_data const&) (functional:2039)
==7472== by 0x45D6BD: std::function<void ()>::operator()() const (functional:2439)
==7472== by 0x473503: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:307)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472==
==7472== This conflicts with a previous read of size 8 by thread #2
==7472== Locks held: none
==7472== at 0x474DF7: load (atomic_base.h:500)
==7472== by 0x474DF7: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2385)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== Address 0x5c570d0 is 32 bytes inside a block of size 104 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x45A7FD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer, moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>*>(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>*&&) (concurrentqueue.h:3435)
==7472== by 0x45A1B0: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::recycle_or_create_producer(bool, bool&) (concurrentqueue.h:3062)
==7472== by 0x456636: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::get_or_add_implicit_producer() (concurrentqueue.h:3308)
==7472== by 0x4555F8: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1216)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44E128: void DispatcherPool::Dispatch<main::$_11::operator()() const::{lambda()#1}>(main::$_11::operator()() const::{lambda()#1}&&) (test.cpp:342)
==7472== by 0x44DFC8: main::$_11::operator()() const (test.cpp:714)
==7472== by 0x44DC4C: std::_Function_handler<void (), main::$_11>::_M_invoke(std::_Any_data const&) (functional:2039)
==7472== by 0x45D6BD: std::function<void ()>::operator()() const (functional:2439)
==7472== by 0x473503: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:307)
==7472== Block was alloc'd by thread #3
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Possible data race during read of size 8 at 0x5C55130 by thread #3
==7472== Locks held: none
==7472== at 0x454230: std::_Function_base::~_Function_base() (functional:1997)
==7472== by 0x453CD4: std::function<void ()>::~function() (functional:1834)
==7472== by 0x47574D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&)::Guard::~Guard() (concurrentqueue.h:2417)
==7472== by 0x47549C: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:2426)
==7472== by 0x4742AB: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ProducerBase::dequeue<std::function<void ()> >(std::function<void ()>&) (concurrentqueue.h:1560)
==7472== by 0x473A5A: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::try_dequeue<std::function<void ()> >(moodycamel::ConsumerToken&, std::function<void ()>&) (concurrentqueue.h:1043)
==7472== by 0x473481: DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1}::operator()() const (test.cpp:303)
==7472== by 0x4733D4: void std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1699)
==7472== by 0x4733A4: std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()>::operator()() (functional:1688)
==7472== by 0x47337B: std::thread::_Impl<std::_Bind_simple<DispatcherPool::DispatcherPool(unsigned int)::{lambda()#1} ()> >::_M_run() (thread:115)
==7472== by 0x5116E2F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4C31FD6: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472==
==7472== This conflicts with a previous write of size 8 by thread #1
==7472== Locks held: none
==7472== at 0x45420C: std::_Function_base::_Function_base() (functional:1993)
==7472== by 0x4581AF: std::function<void ()>::function(std::function<void ()>&&) (functional:2202)
==7472== by 0x45731D: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ImplicitProducer::enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:2375)
==7472== by 0x455634: bool moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::inner_enqueue<(moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::AllocationMode)0, std::function<void ()> >(std::function<void ()>&&) (concurrentqueue.h:1217)
==7472== by 0x45400F: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::enqueue(std::function<void ()>&&) (concurrentqueue.h:853)
==7472== by 0x44D9F1: void DispatcherPool::Dispatch<main::$_11>(main::$_11&&) (test.cpp:342)
==7472== by 0x44D168: main (test.cpp:708)
==7472== Address 0x5c55130 is 608 bytes inside a block of size 6,576 alloc'd
==7472== at 0x4C2CFC0: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x458E34: moodycamel::ConcurrentQueueDefaultTraits::malloc(unsigned long) (concurrentqueue.h:261)
==7472== by 0x4763CD: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block* moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::create_array<moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::Block>(unsigned long) (concurrentqueue.h:3402)
==7472== by 0x476307: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::populate_initial_block_list(unsigned long) (concurrentqueue.h:2864)
==7472== by 0x47171B: moodycamel::ConcurrentQueue<std::function<void ()>, moodycamel::ConcurrentQueueDefaultTraits>::ConcurrentQueue(unsigned long) (concurrentqueue.h:666)
==7472== by 0x453921: DispatcherPool::DispatcherPool(unsigned int) (test.cpp:292)
==7472== by 0x4539E3: DispatcherPool::DispatcherPool() (test.cpp:289)
==7472== by 0x44D002: main (test.cpp:689)
==7472== Block was alloc'd by thread #1
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Thread #1: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
==7472== at 0x4C30295: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x5112D58: std::condition_variable::notify_all() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4712CD: DispatcherPool::_Shutdown(DispatcherPool::TerminationMode) (test.cpp:360)
==7472== by 0x453BA9: DispatcherPool::Await() (test.cpp:354)
==7472== by 0x44D3E4: main (test.cpp:730)
==7472==
==7472== ----------------------------------------------------------------
==7472==
==7472== Thread #1: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
==7472== at 0x4C30295: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==7472== by 0x5112D58: std::condition_variable::notify_all() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==7472== by 0x4712CD: DispatcherPool::_Shutdown(DispatcherPool::TerminationMode) (test.cpp:360)
==7472== by 0x470C09: DispatcherPool::Shutdown() (test.cpp:349)
==7472== by 0x453BE7: DispatcherPool::~DispatcherPool() (test.cpp:336)
==7472== by 0x44D487: main (test.cpp:735)
==7472==
==7472==
==7472== For counts of detected and suppressed errors, rerun with: -v
==7472== Use --history-level=approx or =none to gain increased speed, at
==7472== the cost of reduced accuracy of conflicting-access information
==7472== ERROR SUMMARY: 295 errors from 19 contexts (suppressed: 343 from 49)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment