{"action":"created","issue":{"url":"https://api.github.com/repos/mgerhardy/simpleai/issues/20","repository_url":"https://api.github.com/repos/mgerhardy/simpleai","labels_url":"https://api.github.com/repos/mgerhardy/simpleai/issues/20/labels{/name}","comments_url":"https://api.github.com/repos/mgerhardy/simpleai/issues/20/comments","events_url":"https://api.github.com/repos/mgerhardy/simpleai/issues/20/events","html_url":"https://github.com/mgerhardy/simpleai/issues/20","id":158423678,"number":20,"title":"TSAN warning - data race - ai::Zone::update","user":{"login":"mgerhardy","id":577713,"avatar_url":"https://avatars.githubusercontent.com/u/577713?v=3","gravatar_id":"","url":"https://api.github.com/users/mgerhardy","html_url":"https://github.com/mgerhardy","followers_url":"https://api.github.com/users/mgerhardy/followers","following_url":"https://api.github.com/users/mgerhardy/following{/other_user}","gists_url":"https://api.github.com/users/mgerhardy/gists{/gist_id}","starred_url":"https://api.github.com/users/mgerhardy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgerhardy/subscriptions","organizations_url":"https://api.github.com/users/mgerhardy/orgs","repos_url":"https://api.github.com/users/mgerhardy/repos","events_url":"https://api.github.com/users/mgerhardy/events{/privacy}","received_events_url":"https://api.github.com/users/mgerhardy/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mgerhardy/simpleai/labels/bug","name":"bug","color":"fc2929"}],"state":"closed","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/mgerhardy/simpleai/milestones/1","html_url":"https://github.com/mgerhardy/simpleai/milestones/Version%201.0","labels_url":"https://api.github.com/repos/mgerhardy/simpleai/milestones/1/labels","id":949507,"number":1,"title":"Version 1.0","description":"To reach the 1.0 goal the lib should contain the basic things like Selectors, Conditions, Filters and Steering methods. It should be optimized to run a few 10000 entities on non-server machines.","creator":{"login":"mgerhardy","id":577713,"avatar_url":"https://avatars.githubusercontent.com/u/577713?v=3","gravatar_id":"","url":"https://api.github.com/users/mgerhardy","html_url":"https://github.com/mgerhardy","followers_url":"https://api.github.com/users/mgerhardy/followers","following_url":"https://api.github.com/users/mgerhardy/following{/other_user}","gists_url":"https://api.github.com/users/mgerhardy/gists{/gist_id}","starred_url":"https://api.github.com/users/mgerhardy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgerhardy/subscriptions","organizations_url":"https://api.github.com/users/mgerhardy/orgs","repos_url":"https://api.github.com/users/mgerhardy/repos","events_url":"https://api.github.com/users/mgerhardy/events{/privacy}","received_events_url":"https://api.github.com/users/mgerhardy/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":5,"state":"open","created_at":"2015-01-24T08:11:42Z","updated_at":"2016-06-08T09:55:21Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2016-06-03T18:13:36Z","updated_at":"2016-06-08T09:55:21Z","closed_at":"2016-06-08T09:55:21Z","body":"```\r\nWARNING: ThreadSanitizer: data race (pid=10882)\r\n  Read of size 8 at 0x7d180000bf58 by thread T5 (mutexes: write M244):\r\n    #0 std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::get() const /usr/include/c++/5/bits/unique_ptr.h:305 (simpleai-run+0x00000054497d)\r\n    #1 std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::operator*() const /usr/include/c++/5/bits/unique_ptr.h:291 (simpleai-run+0x00000053a5c3)\r\n    #2 std::__future_base::_State_baseV2::wait() /usr/include/c++/5/future:323 (simpleai-run+0x000000531885)\r\n    #3 std::__basic_future<void>::wait() const /usr/include/c++/5/future:656 (simpleai-run+0x00000054bd9f)\r\n    #4 executeParallel<ai::Zone::update(int64_t)::<lambda(const AIPtr&)> > /home/mgerhardy/dev/simpleai/src/ai/zone/Zone.h:222 (simpleai-run+0x0000006335f4)\r\n    #5 ai::Zone::update(long) /home/mgerhardy/dev/simpleai/src/ai/zone/Zone.cpp:83 (simpleai-run+0x0000006331bf)\r\n    #6 ai::example::GameMap::update(long) <null> (simpleai-run+0x000000539281)\r\n    #7 operator() /home/mgerhardy/dev/simpleai/src/run/Main.cpp:295 (simpleai-run+0x000000523fc3)\r\n    #8 __call<void> /usr/include/c++/5/functional:1074 (simpleai-run+0x000000529152)\r\n    #9 operator()<, void> /usr/include/c++/5/functional:1133 (simpleai-run+0x00000052830f)\r\n    #10 _M_invoke /usr/include/c++/5/functional:1871 (simpleai-run+0x0000005276a2)\r\n    #11 std::function<void ()>::operator()() const <null> (simpleai-run+0x00000053e675)\r\n    #12 ai::ThreadScheduler::ScheduledTask::operator()() const <null> (simpleai-run+0x000000534090)\r\n    #13 ai::ThreadScheduler::ThreadScheduler()::{lambda()#1}::operator()() const <null> (simpleai-run+0x000000534942)\r\n    #14 void std::_Bind_simple<ai::ThreadScheduler::ThreadScheduler()::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) <null> (simpleai-run+0x00000056d8ae)\r\n    #15 std::_Bind_simple<ai::ThreadScheduler::ThreadScheduler()::{lambda()#1} ()>::operator()() <null> (simpleai-run+0x00000056d14c)\r\n    #16 std::thread::_Impl<std::_Bind_simple<ai::ThreadScheduler::ThreadScheduler()::{lambda()#1} ()> >::_M_run() <null> (simpleai-run+0x00000056ce8c)\r\n    #17 <null> <null> (libstdc++.so.6+0x0000000b941f)\r\n\r\n  Previous write of size 8 at 0x7d180000bf58 by thread T1:\r\n    #0 void std::swap<std::__future_base::_Result_base*>(std::__future_base::_Result_base*&, std::__future_base::_Result_base*&) /usr/include/c++/5/bits/move.h:186 (simpleai-run+0x00000055d763)\r\n    #1 std::_Tuple_impl<0ul, std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>::_M_swap(std::_Tuple_impl<0ul, std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>&) /usr/include/c++/5/tuple:332 (simpleai-run+0x000000556ccf)\r\n    #2 std::tuple<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>::swap(std::tuple<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>&) /usr/include/c++/5/tuple:742 (simpleai-run+0x00000054ddad)\r\n    #3 void std::swap<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>(std::tuple<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>&, std::tuple<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter>&) /usr/include/c++/5/tuple:1134 (simpleai-run+0x000000545504)\r\n    #4 std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::swap(std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>&) /usr/include/c++/5/bits/unique_ptr.h:352 (simpleai-run+0x00000053becf)\r\n    #5 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/include/c++/5/future:532 (simpleai-run+0x00000053258d)\r\n    #6 void std::_Mem_fn_base<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), true>::operator()<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*&&) const /usr/include/c++/5/functional:600 (simpleai-run+0x00000055d5ec)\r\n    #7 void std::_Bind_simple<std::_Mem_fn<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*)>::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/5/functional:1531 (simpleai-run+0x000000556bee)\r\n    #8 std::_Bind_simple<std::_Mem_fn<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*)>::operator()() /usr/include/c++/5/functional:1520 (simpleai-run+0x00000054dd2c)\r\n    #9 void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<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/include/c++/5/mutex:706 (simpleai-run+0x000000544bc0)\r\n    #10 pthread_once <null> (libtsan.so.0+0x00000002962f)\r\n    #11 __gthread_once /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:699 (simpleai-run+0x00000051fee9)\r\n    #12 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/include/c++/5/mutex:738 (simpleai-run+0x00000053b017)\r\n    #13 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/include/c++/5/future:387 (simpleai-run+0x000000531a64)\r\n    #14 _M_run /usr/include/c++/5/future:1403 (simpleai-run+0x00000063885b)\r\n    #15 std::packaged_task<void ()>::operator()() /usr/include/c++/5/future:1547 (simpleai-run+0x00000055b8f7)\r\n    #16 operator() /home/mgerhardy/dev/simpleai/src/ai/./common/ThreadPool.h:98 (simpleai-run+0x000000633845)\r\n    #17 _M_invoke /usr/include/c++/5/functional:1871 (simpleai-run+0x00000063561d)\r\n    #18 std::function<void ()>::operator()() const <null> (simpleai-run+0x00000053e675)\r\n    #19 ai::ThreadPool::ThreadPool(unsigned long)::{lambda()#1}::operator()() const <null> (simpleai-run+0x0000005331e2)\r\n    #20 void std::_Bind_simple<ai::ThreadPool::ThreadPool(unsigned long)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) <null> (simpleai-run+0x00000056d716)\r\n    #21 std::_Bind_simple<ai::ThreadPool::ThreadPool(unsigned long)::{lambda()#1} ()>::operator()() <null> (simpleai-run+0x00000056d0f0)\r\n    #22 std::thread::_Impl<std::_Bind_simple<ai::ThreadPool::ThreadPool(unsigned long)::{lambda()#1} ()> >::_M_run() <null> (simpleai-run+0x00000056c1ce)\r\n    #23 <null> <null> (libstdc++.so.6+0x0000000b941f)\r\n\r\n  Location is heap block of size 88 at 0x7d180000bf40 allocated by thread T5:\r\n    #0 operator new(unsigned long) <null> (libtsan.so.0+0x0000000659b3)\r\n    #1 allocate /usr/include/c++/5/ext/new_allocator.h:104 (simpleai-run+0x00000063762e)\r\n    #2 allocate /usr/include/c++/5/bits/alloc_traits.h:491 (simpleai-run+0x000000637297)\r\n    #3 __allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<std::__future_base::_Task_state<std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, std::allocator<int>, void()>, std::allocator<int>, (__gnu_cxx::_Lock_policy)2u> > > /usr/include/c++/5/bits/allocated_ptr.h:102 (simpleai-run+0x000000636ce4)\r\n    #4 __shared_count<std::__future_base::_Task_state<std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, std::allocator<int>, void()>, std::allocator<int>, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, const std::allocator<int>&> /usr/include/c++/5/bits/shared_ptr_base.h:615 (simpleai-run+0x000000636a50)\r\n    #5 __shared_ptr<std::allocator<int>, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, const std::allocator<int>&> /usr/include/c++/5/bits/shared_ptr_base.h:1097 (simpleai-run+0x000000636879)\r\n    #6 shared_ptr<std::allocator<int>, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, const std::allocator<int>&> /usr/include/c++/5/bits/shared_ptr.h:319 (simpleai-run+0x0000006365d4)\r\n    #7 allocate_shared<std::__future_base::_Task_state<std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, std::allocator<int>, void()>, std::allocator<int>, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, const std::allocator<int>&> /usr/include/c++/5/bits/shared_ptr.h:620 (simpleai-run+0x00000063634c)\r\n    #8 __create_task_state<void(), std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, std::allocator<int> > /usr/include/c++/5/future:1445 (simpleai-run+0x000000636217)\r\n    #9 packaged_task<std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, std::allocator<int>, void> /usr/include/c++/5/future:1497 (simpleai-run+0x000000636062)\r\n    #10 packaged_task<std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)>, void> /usr/include/c++/5/future:1487 (simpleai-run+0x000000635f81)\r\n    #11 construct<std::packaged_task<void()>, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/ext/new_allocator.h:120 (simpleai-run+0x000000635e26)\r\n    #12 construct<std::packaged_task<void()>, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/bits/alloc_traits.h:530 (simpleai-run+0x0000006358c9)\r\n    #13 _Sp_counted_ptr_inplace<std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/bits/shared_ptr_base.h:522 (simpleai-run+0x0000006354d2)\r\n    #14 __shared_count<std::packaged_task<void()>, std::allocator<std::packaged_task<void()> >, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/bits/shared_ptr_base.h:617 (simpleai-run+0x000000635025)\r\n    #15 __shared_ptr<std::allocator<std::packaged_task<void()> >, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/bits/shared_ptr_base.h:1097 (simpleai-run+0x000000634bd7)\r\n    #16 shared_ptr<std::allocator<std::packaged_task<void()> >, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/bits/shared_ptr.h:319 (simpleai-run+0x000000634770)\r\n    #17 allocate_shared<std::packaged_task<void()>, std::allocator<std::packaged_task<void()> >, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/bits/shared_ptr.h:620 (simpleai-run+0x000000634424)\r\n    #18 make_shared<std::packaged_task<void()>, std::_Bind<ai::Zone::update(int64_t)::<lambda(const AIPtr&)>(std::shared_ptr<ai::AI>)> > /usr/include/c++/5/bits/shared_ptr.h:636 (simpleai-run+0x000000633da7)\r\n    #19 enqueue<const ai::Zone::update(int64_t)::<lambda(const AIPtr&)>&, const std::shared_ptr<ai::AI>&> /home/mgerhardy/dev/simpleai/src/ai/./common/ThreadPool.h:93 (simpleai-run+0x0000006339d9)\r\n    #20 executeAsync<ai::Zone::update(int64_t)::<lambda(const AIPtr&)> > /home/mgerhardy/dev/simpleai/src/ai/zone/Zone.h:167 (simpleai-run+0x0000006336d5)\r\n    #21 executeParallel<ai::Zone::update(int64_t)::<lambda(const AIPtr&)> > /home/mgerhardy/dev/simpleai/src/ai/zone/Zone.h:218 (simpleai-run+0x0000006334a8)\r\n    #22 ai::Zone::update(long) /home/mgerhardy/dev/simpleai/src/ai/zone/Zone.cpp:83 (simpleai-run+0x0000006331bf)\r\n    #23 ai::example::GameMap::update(long) <null> (simpleai-run+0x000000539281)\r\n    #24 operator() /home/mgerhardy/dev/simpleai/src/run/Main.cpp:295 (simpleai-run+0x000000523fc3)\r\n    #25 __call<void> /usr/include/c++/5/functional:1074 (simpleai-run+0x000000529152)\r\n    #26 operator()<, void> /usr/include/c++/5/functional:1133 (simpleai-run+0x00000052830f)\r\n    #27 _M_invoke /usr/include/c++/5/functional:1871 (simpleai-run+0x0000005276a2)\r\n    #28 std::function<void ()>::operator()() const <null> (simpleai-run+0x00000053e675)\r\n    #29 ai::ThreadScheduler::ScheduledTask::operator()() const <null> (simpleai-run+0x000000534090)\r\n    #30 ai::ThreadScheduler::ThreadScheduler()::{lambda()#1}::operator()() const <null> (simpleai-run+0x000000534942)\r\n    #31 void std::_Bind_simple<ai::ThreadScheduler::ThreadScheduler()::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) <null> (simpleai-run+0x00000056d8ae)\r\n    #32 std::_Bind_simple<ai::ThreadScheduler::ThreadScheduler()::{lambda()#1} ()>::operator()() <null> (simpleai-run+0x00000056d14c)\r\n    #33 std::thread::_Impl<std::_Bind_simple<ai::ThreadScheduler::ThreadScheduler()::{lambda()#1} ()> >::_M_run() <null> (simpleai-run+0x00000056ce8c)\r\n    #34 <null> <null> (libstdc++.so.6+0x0000000b941f)\r\n\r\n  Mutex M244 (0x7ffc9758abc8) created at:\r\n    #0 pthread_mutex_lock <null> (libtsan.so.0+0x0000000363de)\r\n    #1 __gthread_mutex_lock /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:748 (simpleai-run+0x00000051ff44)\r\n    #2 std::mutex::lock() /usr/include/c++/5/mutex:135 (simpleai-run+0x00000053068b)\r\n    #3 std::unique_lock<std::mutex>::lock() /usr/include/c++/5/mutex:485 (simpleai-run+0x000000546863)\r\n    #4 std::unique_lock<std::mutex>::unique_lock(std::mutex&) /usr/include/c++/5/mutex:415 (simpleai-run+0x00000053e1d6)\r\n    #5 scheduleAtFixedRate<main(int, char**)::<lambda()> > /home/mgerhardy/dev/simpleai/src/ai/common/ThreadScheduler.h:103 (simpleai-run+0x000000525f61)\r\n    #6 main /home/mgerhardy/dev/simpleai/src/run/Main.cpp:295 (simpleai-run+0x0000005253de)\r\n\r\n  Thread T5 (tid=10888, running) created by main thread at:\r\n    #0 pthread_create <null> (libtsan.so.0+0x000000027d7d)\r\n    #1 std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) <null> (libstdc++.so.6+0x0000000b9562)\r\n    #2 ai::ThreadScheduler::ThreadScheduler() <null> (simpleai-run+0x000000534e22)\r\n    #3 main /home/mgerhardy/dev/simpleai/src/run/Main.cpp:292 (simpleai-run+0x00000052517a)\r\n\r\n  Thread T1 (tid=10884, running) created by main thread at:\r\n    #0 pthread_create <null> (libtsan.so.0+0x000000027d7d)\r\n    #1 std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) <null> (libstdc++.so.6+0x0000000b9562)\r\n    #2 _ZN9__gnu_cxx13new_allocatorISt6threadE9constructIS1_IZN2ai10ThreadPoolC4EmEUlvE_EEEvPT_DpOT0_ <null> (simpleai-run+0x00000054fcec)\r\n    #3 _ZNSt16allocator_traitsISaISt6threadEE9constructIS0_IZN2ai10ThreadPoolC4EmEUlvE_EEEvRS1_PT_DpOT0_ <null> (simpleai-run+0x000000546f88)\r\n    #4 void std::vector<std::thread, std::allocator<std::thread> >::emplace_back<ai::ThreadPool::ThreadPool(unsigned long)::{lambda()#1}>(ai::ThreadPool::ThreadPool(unsigned long)::{lambda()#1}&&) <null> (simpleai-run+0x00000053e86a)\r\n    #5 ai::ThreadPool::ThreadPool(unsigned long) <null> (simpleai-run+0x00000053360e)\r\n    #6 ai::Zone::Zone(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) <null> (simpleai-run+0x00000053700b)\r\n    #7 ai::example::GameMap::GameMap(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ai::Server&) /home/mgerhardy/dev/simpleai/src/run/GameMap.h:23 (simpleai-run+0x000000537a09)\r\n    #8 createMap /home/mgerhardy/dev/simpleai/src/run/Main.cpp:69 (simpleai-run+0x00000052074e)\r\n    #9 main /home/mgerhardy/dev/simpleai/src/run/Main.cpp:288 (simpleai-run+0x0000005250d2)\r\n```\r\n"},"comment":{"url":"https://api.github.com/repos/mgerhardy/simpleai/issues/comments/224543416","html_url":"https://github.com/mgerhardy/simpleai/issues/20#issuecomment-224543416","issue_url":"https://api.github.com/repos/mgerhardy/simpleai/issues/20","id":224543416,"user":{"login":"mgerhardy","id":577713,"avatar_url":"https://avatars.githubusercontent.com/u/577713?v=3","gravatar_id":"","url":"https://api.github.com/users/mgerhardy","html_url":"https://github.com/mgerhardy","followers_url":"https://api.github.com/users/mgerhardy/followers","following_url":"https://api.github.com/users/mgerhardy/following{/other_user}","gists_url":"https://api.github.com/users/mgerhardy/gists{/gist_id}","starred_url":"https://api.github.com/users/mgerhardy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgerhardy/subscriptions","organizations_url":"https://api.github.com/users/mgerhardy/orgs","repos_url":"https://api.github.com/users/mgerhardy/repos","events_url":"https://api.github.com/users/mgerhardy/events{/privacy}","received_events_url":"https://api.github.com/users/mgerhardy/received_events","type":"User","site_admin":false},"created_at":"2016-06-08T09:55:21Z","updated_at":"2016-06-08T09:55:21Z","body":"data races should be fixed for now."}}
{"actor":{"display_login":"mgerhardy"}}