==================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b140018a218 by main thread: #0 operator delete(void*) <null> (libtsan.so.0+0x6f3d1) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >::deallocate(std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >*, unsigned long) /usr/include/c++/7/ext/new_allocator.h:125 (wesnoth-debug+0x422b3f9) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > > >::deallocate(std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >&, std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >*, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:462 (wesnoth-debug+0x422b13d) #3 std::_Rb_tree<unsigned long, std::pair<unsigned long const, gui2::timer>, std::_Select1st<std::pair<unsigned long const, gui2::timer> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::_M_put_node(std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >*) /usr/include/c++/7/bits/stl_tree.h:592 (wesnoth-debug+0x422ab68) #4 std::_Rb_tree<unsigned long, std::pair<unsigned long const, gui2::timer>, std::_Select1st<std::pair<unsigned long const, gui2::timer> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::_M_drop_node(std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >*) /usr/include/c++/7/bits/stl_tree.h:659 (wesnoth-debug+0x4229741) #5 std::_Rb_tree<unsigned long, std::pair<unsigned long const, gui2::timer>, std::_Select1st<std::pair<unsigned long const, gui2::timer> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<unsigned long const, gui2::timer> >) /usr/include/c++/7/bits/stl_tree.h:2477 (wesnoth-debug+0x422a9ad) #6 std::_Rb_tree<unsigned long, std::pair<unsigned long const, gui2::timer>, std::_Select1st<std::pair<unsigned long const, gui2::timer> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >) <null> (wesnoth-debug+0x42295cb) #7 std::map<unsigned long, gui2::timer, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >) <null> (wesnoth-debug+0x42289e3) #8 gui2::remove_timer(unsigned long) src/gui/core/timer.cpp:170 (wesnoth-debug+0x4227a28) #9 gui2::dialogs::loading_screen::clear_timer() src/gui/dialogs/loading_screen.cpp:233 (wesnoth-debug+0x4276c87) #10 gui2::dialogs::loading_screen::post_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:138 (wesnoth-debug+0x4274750) #11 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:108 (wesnoth-debug+0x42a2ced) #12 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #13 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:968 (wesnoth-debug+0x40f568f) #14 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #15 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous read of size 4 at 0x7b140018a21c by thread T1: #0 timer_callback src/gui/core/timer.cpp:106 (wesnoth-debug+0x4226e69) #1 <null> <null> (libSDL2-2.0.so.0+0x67fc8) As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:968 (wesnoth-debug+0x40f568f) #5 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #6 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Thread T1 'SDLTimer' (tid=17521, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 <null> <null> (libSDL2-2.0.so.0+0xd8e36) #2 __libc_start_main <null> (libc.so.6+0x21a86) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x6f3d1) in operator delete(void*)==================20180525 22:47:25 info wml: [Naia] codename Naia version 20180525 initializing20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/package.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/hex.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/common.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/npc.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/optimizations.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/patch.lua20180525 22:47:25 info wml: [Naia] PATCH [remove_sound_source]: comma-separated id list20180525 22:47:25 info wml: [Naia] PATCH [message]: [fallback_if]/[fallback_to]20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/spawner.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/wlp.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/gui/bug.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/gui/transient_message.lua20180525 22:47:25 info wml: [Naia] Init: loading ~add-ons/Naia/lua/compat.lua20180525 22:47:25 info wml: [Naia] Invasion from the Unknown (project_ethea.Invasion_from_the_Unknown) version 2.1.0-dev (Naia 20180525)20180525 22:47:25 error wml: [IftU] BUG: This is an experimental port of Invasion from the Unknown to Wesnoth 1.14.x.If you choose to continue, you must report any issues to the author on the project?s issue tracker:==================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b1c01e9a980 by main thread: #0 std::less<gui2::event::ui_event>::operator()(gui2::event::ui_event const&, gui2::event::ui_event const&) const /usr/include/c++/7/bits/stl_function.h:386 (wesnoth-debug+0x3979847) #1 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >*, std::_Rb_tree_node_base*, gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1872 (wesnoth-debug+0x3bb2b94) #2 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1187 (wesnoth-debug+0x3bb00d2) #3 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:1234 (wesnoth-debug+0x3bae94e) #4 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:489 (wesnoth-debug+0x3bacb7c) #5 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<4> >::value, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >::type& gui2::event::dispatcher_implementation::event_signal<mpl_::int_<4> >(gui2::event::dispatcher&, gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:107 (wesnoth-debug+0x41c3f07) #6 bool gui2::event::dispatcher_implementation::has_handler::oper<mpl_::int_<4> >(gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:154 (wesnoth-debug+0x41c2dbb) #7 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:205 (wesnoth-debug+0x41c1b29) #8 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c08b7) #9 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41bf639) #10 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41be3d3) #11 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bcf7b) #12 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bbacd) #13 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b9cb3) #14 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b7681) #15 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b2951) #16 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41ac7fd) #17 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a7753) #18 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a1c35) #19 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x4198b7f) #20 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<27>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<27>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x418bd15) #21 bool gui2::event::find<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:246 (wesnoth-debug+0x4187059) #22 gui2::event::dispatcher::has_event(gui2::event::ui_event, gui2::event::dispatcher::event_queue_type) src/gui/core/event/dispatcher.cpp:80 (wesnoth-debug+0x41822c1) #23 std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > > gui2::event::implementation::build_event_chain<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >(gui2::event::ui_event, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:310 (wesnoth-debug+0x418dc1b) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:502 (wesnoth-debug+0x4188ac6) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #26 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1c01e9a980 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 112 at 0x7b1c01e9a960 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3bb5bb6) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x3bb4b92) #3 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x3bb2cdb) #4 std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >* std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x3bb020b) #5 std::_Rb_tree_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x3baed57) #6 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x3bacd5e) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x3baa852) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)3> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)3>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:398 (wesnoth-debug+0x3c6535d) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:324 (wesnoth-debug+0x3c40e42) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_function.h:386 in std::less<gui2::event::ui_event>::operator()(gui2::event::ui_event const&, gui2::event::ui_event const&) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b1c01e9a978 by main thread: #0 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_S_right(std::_Rb_tree_node_base*) /usr/include/c++/7/bits/stl_tree.h:772 (wesnoth-debug+0x3bb37cf) #1 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >*, std::_Rb_tree_node_base*, gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1875 (wesnoth-debug+0x3bb2bc1) #2 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1187 (wesnoth-debug+0x3bb00d2) #3 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:1234 (wesnoth-debug+0x3bae94e) #4 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:489 (wesnoth-debug+0x3bacb7c) #5 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<4> >::value, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >::type& gui2::event::dispatcher_implementation::event_signal<mpl_::int_<4> >(gui2::event::dispatcher&, gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:107 (wesnoth-debug+0x41c3f07) #6 bool gui2::event::dispatcher_implementation::has_handler::oper<mpl_::int_<4> >(gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:154 (wesnoth-debug+0x41c2dbb) #7 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:205 (wesnoth-debug+0x41c1b29) #8 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c08b7) #9 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41bf639) #10 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41be3d3) #11 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bcf7b) #12 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bbacd) #13 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b9cb3) #14 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b7681) #15 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b2951) #16 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41ac7fd) #17 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a7753) #18 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a1c35) #19 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x4198b7f) #20 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<27>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<27>, boost::mpl::s_item<mpl_::int_<26>, boost::mpl::s_item<mpl_::int_<29>, boost::mpl::s_item<mpl_::int_<28>, boost::mpl::s_item<mpl_::int_<41>, boost::mpl::s_item<mpl_::int_<38>, boost::mpl::s_item<mpl_::int_<21>, boost::mpl::s_item<mpl_::int_<20>, boost::mpl::s_item<mpl_::int_<15>, boost::mpl::s_item<mpl_::int_<14>, boost::mpl::s_item<mpl_::int_<9>, boost::mpl::s_item<mpl_::int_<8>, boost::mpl::s_item<mpl_::int_<6>, boost::mpl::s_item<mpl_::int_<4>, boost::mpl::s_item<mpl_::int_<3>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x418bd15) #21 bool gui2::event::find<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:246 (wesnoth-debug+0x4187059) #22 gui2::event::dispatcher::has_event(gui2::event::ui_event, gui2::event::dispatcher::event_queue_type) src/gui/core/event/dispatcher.cpp:80 (wesnoth-debug+0x41822c1) #23 std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > > gui2::event::implementation::build_event_chain<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >(gui2::event::ui_event, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:310 (wesnoth-debug+0x418dc1b) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:502 (wesnoth-debug+0x4188ac6) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #26 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1c01e9a978 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 112 at 0x7b1c01e9a960 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3bb5bb6) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x3bb4b92) #3 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x3bb2cdb) #4 std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >* std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x3bb020b) #5 std::_Rb_tree_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x3baed57) #6 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x3bacd5e) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x3baa852) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<3>, mpl_::int_<4>, mpl_::int_<6>, mpl_::int_<8>, mpl_::int_<9>, mpl_::int_<14>, mpl_::int_<15>, mpl_::int_<20>, mpl_::int_<21>, mpl_::int_<38>, mpl_::int_<41>, mpl_::int_<28>, mpl_::int_<29>, mpl_::int_<26>, mpl_::int_<27>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)3> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)3>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:398 (wesnoth-debug+0x3c6535d) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:324 (wesnoth-debug+0x3c40e42) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_tree.h:772 in std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)> > > > >::_S_right(std::_Rb_tree_node_base*)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b74000e98c0 by main thread: #0 __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x46c9b86) #1 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::begin() /usr/include/c++/7/bits/stl_vector.h:564 (wesnoth-debug+0x46c6007) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:59 (wesnoth-debug+0x46c806b) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #5 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #6 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #7 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #8 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #9 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #10 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #11 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #12 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #13 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #14 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #15 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #16 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #17 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #18 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #19 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #20 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #21 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #22 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #23 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #24 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #25 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #26 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #27 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #28 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #29 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b74000e98c0 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 2496 at 0x7b74000e9200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee24) #2 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #8 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #9 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #10 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #11 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #12 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #13 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #14 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #15 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #16 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #17 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #18 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #19 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #20 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #21 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #22 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #23 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #24 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b74000e98c8 by main thread: #0 __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x46c9b86) #1 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::end() <null> (wesnoth-debug+0x46c6079) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:59 (wesnoth-debug+0x46c809d) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #5 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #6 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #7 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #8 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #9 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #10 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #11 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #12 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #13 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #14 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #15 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #16 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #17 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #18 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #19 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #20 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #21 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #22 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #23 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #24 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #25 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #26 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #27 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #28 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #29 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b74000e98c8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 2496 at 0x7b74000e9200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee24) #2 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #8 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #9 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #10 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #11 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #12 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #13 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #14 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #15 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #16 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #17 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #18 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #19 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #20 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #21 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #22 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #23 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #24 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b08005558c8 by main thread: #0 std::__uniq_ptr_impl<gui2::widget, std::default_delete<gui2::widget> >::_M_ptr() const /usr/include/c++/7/bits/unique_ptr.h:147 (wesnoth-debug+0x4442263) #1 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::get() const /usr/include/c++/7/bits/unique_ptr.h:337 (wesnoth-debug+0x44289a0) #2 gui2::grid::child::get_widget() src/gui/widgets/grid.hpp:407 (wesnoth-debug+0x4423f1a) #3 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:62 (wesnoth-debug+0x46c8122) #4 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #5 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #6 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #7 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #8 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #9 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #10 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #11 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #12 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #13 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #14 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #15 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #16 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #17 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #18 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #19 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #20 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #21 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #22 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #23 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #24 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #25 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #26 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #27 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #28 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #29 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #30 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b08005558c8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 32 at 0x7b08005558c0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::grid::child>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x46d03b8) #2 std::allocator_traits<std::allocator<gui2::grid::child> >::allocate(std::allocator<gui2::grid::child>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x46cf59c) #3 std::_Vector_base<gui2::grid::child, std::allocator<gui2::grid::child> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x46ce700) #4 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::_M_default_append(unsigned long) <null> (wesnoth-debug+0x46cc99f) #5 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::resize(unsigned long) <null> (wesnoth-debug+0x46c9134) #6 gui2::grid::set_rows_cols(unsigned int, unsigned int) src/gui/widgets/grid.cpp:737 (wesnoth-debug+0x46b8a57) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:457 (wesnoth-debug+0x4236ec3) #8 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #9 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/unique_ptr.h:147 in std::__uniq_ptr_impl<gui2::widget, std::default_delete<gui2::widget> >::_M_ptr() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b7000134800 by main thread: #0 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c8184) #1 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #2 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #3 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #4 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #5 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #6 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #7 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #8 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #9 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #10 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #11 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #12 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #13 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #14 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #15 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #16 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #17 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #18 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #19 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #20 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #21 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #22 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #23 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #24 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #25 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #26 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #27 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134800 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/grid_private.hpp:67 in gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b7000134f10 by main thread: #0 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:62 (wesnoth-debug+0x473627b) #1 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #5 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #6 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #7 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #8 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #9 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #10 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #11 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #12 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #13 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #14 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #15 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #16 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #17 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #18 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #19 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #20 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #21 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #22 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #23 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #24 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #25 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #26 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #27 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #28 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #29 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134f10 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/scrollbar_container_private.hpp:62 in gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b7000134f08 by main thread: #0 std::__uniq_ptr_impl<gui2::grid, std::default_delete<gui2::grid> >::_M_ptr() const /usr/include/c++/7/bits/unique_ptr.h:147 (wesnoth-debug+0x3a490fd) #1 std::unique_ptr<gui2::grid, std::default_delete<gui2::grid> >::get() const /usr/include/c++/7/bits/unique_ptr.h:337 (wesnoth-debug+0x3a43268) #2 std::unique_ptr<gui2::grid, std::default_delete<gui2::grid> >::operator bool() const /usr/include/c++/7/bits/unique_ptr.h:351 (wesnoth-debug+0x4736149) #3 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:62 (wesnoth-debug+0x47362c0) #4 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #9 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #10 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #11 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #13 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #14 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #15 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #16 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #17 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #18 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #19 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #20 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #21 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #22 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #23 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #24 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #25 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #26 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #27 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134f08 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/unique_ptr.h:147 in std::__uniq_ptr_impl<gui2::grid, std::default_delete<gui2::grid> >::_M_ptr() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b7000134bf8 by main thread: #0 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391be3) #1 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #2 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #3 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #4 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #5 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #6 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #7 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #8 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #9 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #10 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #11 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #12 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #13 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #14 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #15 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #16 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #17 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #18 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #19 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #20 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #21 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #22 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #23 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #24 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #25 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #26 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #27 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #28 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #29 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #30 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134bf8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/container_base.cpp:223 in gui2::container_base::find_at(point const&, bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b7000134ec0 by main thread: #0 __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x46c9b86) #1 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::begin() /usr/include/c++/7/bits/stl_vector.h:564 (wesnoth-debug+0x46c6007) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:59 (wesnoth-debug+0x46c806b) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #5 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #6 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #7 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #8 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #9 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #10 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #11 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #12 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #13 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #14 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #15 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #16 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #17 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #18 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #19 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #20 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #21 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #22 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #23 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #24 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #25 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #26 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #27 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #28 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #29 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #30 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #31 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #32 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #33 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #34 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134ec0 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b7000134ec8 by main thread: #0 __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x46c9b86) #1 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::end() <null> (wesnoth-debug+0x46c6079) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:59 (wesnoth-debug+0x46c809d) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #5 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #6 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #7 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #8 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #9 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #10 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #11 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #12 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #13 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #14 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #15 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #16 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #17 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #18 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #19 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #20 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #21 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #22 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #23 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #24 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #25 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #26 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #27 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #28 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #29 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #30 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #31 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #32 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #33 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #34 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134ec8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b100019f388 by main thread: #0 std::__uniq_ptr_impl<gui2::widget, std::default_delete<gui2::widget> >::_M_ptr() const /usr/include/c++/7/bits/unique_ptr.h:147 (wesnoth-debug+0x4442263) #1 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::get() const /usr/include/c++/7/bits/unique_ptr.h:337 (wesnoth-debug+0x44289a0) #2 gui2::grid::child::get_widget() src/gui/widgets/grid.hpp:407 (wesnoth-debug+0x4423f1a) #3 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:62 (wesnoth-debug+0x46c8122) #4 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #5 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #6 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #7 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #8 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #9 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #10 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #11 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #12 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #13 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #14 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #15 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #16 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #17 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #18 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #19 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #20 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #21 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #22 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #23 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #24 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #25 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #26 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #27 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #28 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #29 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #30 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #31 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #32 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #33 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #34 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #35 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b100019f388 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 64 at 0x7b100019f380 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::grid::child>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x46d03b8) #2 std::allocator_traits<std::allocator<gui2::grid::child> >::allocate(std::allocator<gui2::grid::child>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x46cf59c) #3 std::_Vector_base<gui2::grid::child, std::allocator<gui2::grid::child> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x46ce700) #4 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::_M_default_append(unsigned long) <null> (wesnoth-debug+0x46cc99f) #5 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::resize(unsigned long) <null> (wesnoth-debug+0x46c9134) #6 gui2::grid::set_rows_cols(unsigned int, unsigned int) src/gui/widgets/grid.cpp:737 (wesnoth-debug+0x46b8a57) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:457 (wesnoth-debug+0x4236ec3) #8 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #9 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #10 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #11 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #12 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/unique_ptr.h:147 in std::__uniq_ptr_impl<gui2::widget, std::default_delete<gui2::widget> >::_M_ptr() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b64000f9600 by main thread: #0 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c8184) #1 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #2 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #3 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #4 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #9 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #10 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #11 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #13 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #14 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #15 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #16 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #17 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #18 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #19 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #20 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #21 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #22 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #23 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #24 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #25 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #26 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #27 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f9600 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1096 at 0x7b64000f9600 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_spacer::build() const src/gui/widgets/spacer.cpp:182 (wesnoth-debug+0x3b78cee) #2 gui2::build_single_widget_instance_helper(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.cpp:143 (wesnoth-debug+0x4231433) #3 gui2::spacer* gui2::build_single_widget_instance<gui2::spacer>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.hpp:108 (wesnoth-debug+0x4738613) #4 gui2::scrollbar_container::finalize_setup() src/gui/widgets/scrollbar_container.cpp:762 (wesnoth-debug+0x4721dde) #5 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:166 (wesnoth-debug+0x3b2a202) #6 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #7 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #8 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/grid_private.hpp:67 in gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f983c by main thread: #0 gui2::widget::recursive_is_visible(gui2::widget const*, bool) const src/gui/widgets/widget.cpp:605 (wesnoth-debug+0x47d0038) #1 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:618 (wesnoth-debug+0x47d037e) #2 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #3 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #7 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #8 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #9 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #10 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #11 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #12 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #13 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #14 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #15 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #16 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #17 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #18 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #19 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #20 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #21 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #22 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #23 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #24 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #25 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #26 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #27 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #28 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #29 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #30 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #31 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #32 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #33 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #34 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #35 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #36 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f9838 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1096 at 0x7b64000f9600 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_spacer::build() const src/gui/widgets/spacer.cpp:182 (wesnoth-debug+0x3b78cee) #2 gui2::build_single_widget_instance_helper(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.cpp:143 (wesnoth-debug+0x4231433) #3 gui2::spacer* gui2::build_single_widget_instance<gui2::spacer>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.hpp:108 (wesnoth-debug+0x4738613) #4 gui2::scrollbar_container::finalize_setup() src/gui/widgets/scrollbar_container.cpp:762 (wesnoth-debug+0x4721dde) #5 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:166 (wesnoth-debug+0x3b2a202) #6 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #7 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #8 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:605 in gui2::widget::recursive_is_visible(gui2::widget const*, bool) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b64000f97f8 by main thread: #0 gui2::widget::recursive_is_visible(gui2::widget const*, bool) const src/gui/widgets/widget.cpp:610 (wesnoth-debug+0x47d023a) #1 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:618 (wesnoth-debug+0x47d037e) #2 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #3 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #7 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #8 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #9 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #10 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #11 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #12 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #13 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #14 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #15 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #16 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #17 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #18 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #19 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #20 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #21 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #22 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #23 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #24 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #25 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #26 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #27 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #28 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #29 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #30 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #31 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #32 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #33 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #34 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #35 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #36 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f97f8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1096 at 0x7b64000f9600 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_spacer::build() const src/gui/widgets/spacer.cpp:182 (wesnoth-debug+0x3b78cee) #2 gui2::build_single_widget_instance_helper(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.cpp:143 (wesnoth-debug+0x4231433) #3 gui2::spacer* gui2::build_single_widget_instance<gui2::spacer>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.hpp:108 (wesnoth-debug+0x4738613) #4 gui2::scrollbar_container::finalize_setup() src/gui/widgets/scrollbar_container.cpp:762 (wesnoth-debug+0x4721dde) #5 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:166 (wesnoth-debug+0x3b2a202) #6 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #7 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #8 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:610 in gui2::widget::recursive_is_visible(gui2::widget const*, bool) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f980c by main thread: #0 gui2::widget::get_size() const src/gui/widgets/widget.cpp:304 (wesnoth-debug+0x47ca488) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca6e0) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #9 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #10 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #11 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #12 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #13 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #14 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #15 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #16 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #17 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #18 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #19 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #20 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #21 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #22 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #23 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #24 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #25 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #26 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #27 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #28 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #29 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #30 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #31 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #32 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #33 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #34 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #35 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #36 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #37 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f9808 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1096 at 0x7b64000f9600 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_spacer::build() const src/gui/widgets/spacer.cpp:182 (wesnoth-debug+0x3b78cee) #2 gui2::build_single_widget_instance_helper(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.cpp:143 (wesnoth-debug+0x4231433) #3 gui2::spacer* gui2::build_single_widget_instance<gui2::spacer>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.hpp:108 (wesnoth-debug+0x4738613) #4 gui2::scrollbar_container::finalize_setup() src/gui/widgets/scrollbar_container.cpp:762 (wesnoth-debug+0x4721dde) #5 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:166 (wesnoth-debug+0x3b2a202) #6 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #7 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #8 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:304 in gui2::widget::get_size() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f9804 by main thread: #0 gui2::widget::get_origin() const src/gui/widgets/widget.cpp:299 (wesnoth-debug+0x47ca232) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca7fe) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #9 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #10 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #11 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #12 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #13 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #14 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #15 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #16 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #17 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #18 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #19 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #20 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #21 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #22 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #23 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #24 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #25 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #26 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #27 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #28 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #29 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #30 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #31 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #32 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #33 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #34 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #35 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #36 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #37 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f9800 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1096 at 0x7b64000f9600 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_spacer::build() const src/gui/widgets/spacer.cpp:182 (wesnoth-debug+0x3b78cee) #2 gui2::build_single_widget_instance_helper(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.cpp:143 (wesnoth-debug+0x4231433) #3 gui2::spacer* gui2::build_single_widget_instance<gui2::spacer>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&) src/gui/core/window_builder.hpp:108 (wesnoth-debug+0x4738613) #4 gui2::scrollbar_container::finalize_setup() src/gui/widgets/scrollbar_container.cpp:762 (wesnoth-debug+0x4721dde) #5 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:166 (wesnoth-debug+0x3b2a202) #6 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #7 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #8 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:299 in gui2::widget::get_origin() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b58000cf8c8 by main thread: #0 __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x46c9b86) #1 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::begin() /usr/include/c++/7/bits/stl_vector.h:564 (wesnoth-debug+0x46c6007) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:59 (wesnoth-debug+0x46c806b) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #7 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #8 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #9 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #10 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #11 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #12 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #13 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #14 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #15 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #16 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #17 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #18 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #19 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #20 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #21 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #22 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #23 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #24 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #25 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #26 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #27 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #28 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #29 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #30 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #31 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #32 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #33 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #34 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #35 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #36 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b58000cf8c8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 736 at 0x7b58000cf600 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x423678a) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #5 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #6 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #7 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #8 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #14 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #15 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #16 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #17 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #18 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #19 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #20 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #21 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #22 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #23 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #24 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #25 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #26 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #27 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #28 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #29 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #30 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b58000cf8d0 by main thread: #0 __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x46c9b86) #1 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::end() <null> (wesnoth-debug+0x46c6079) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:59 (wesnoth-debug+0x46c809d) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #7 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #8 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #9 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #10 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #11 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #12 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #13 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #14 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #15 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #16 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #17 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #18 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #19 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #20 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #21 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #22 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #23 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #24 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #25 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #26 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #27 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #28 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #29 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #30 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #31 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #32 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #33 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #34 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #35 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #36 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b58000cf8d0 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 736 at 0x7b58000cf600 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x423678a) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #5 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #6 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #7 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #8 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #14 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #15 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #16 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #17 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #18 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #19 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #20 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #21 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #22 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #23 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #24 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #25 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #26 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #27 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #28 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #29 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #30 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<gui2::grid::child*, std::vector<gui2::grid::child, std::allocator<gui2::grid::child> > >::__normal_iterator(gui2::grid::child* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b04000c7e48 by main thread: #0 std::__uniq_ptr_impl<gui2::widget, std::default_delete<gui2::widget> >::_M_ptr() const /usr/include/c++/7/bits/unique_ptr.h:147 (wesnoth-debug+0x4442263) #1 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::get() const /usr/include/c++/7/bits/unique_ptr.h:337 (wesnoth-debug+0x44289a0) #2 gui2::grid::child::get_widget() src/gui/widgets/grid.hpp:407 (wesnoth-debug+0x4423f1a) #3 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:62 (wesnoth-debug+0x46c8122) #4 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #9 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #10 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #11 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #12 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #13 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #14 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #15 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #16 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #17 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #18 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #19 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #20 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #21 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #22 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #23 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #24 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #25 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #26 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #27 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #28 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #29 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #30 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #31 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #32 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #33 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #34 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #35 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #36 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #37 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b04000c7e48 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 16 at 0x7b04000c7e40 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::grid::child>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x46d03b8) #2 std::allocator_traits<std::allocator<gui2::grid::child> >::allocate(std::allocator<gui2::grid::child>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x46cf59c) #3 std::_Vector_base<gui2::grid::child, std::allocator<gui2::grid::child> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x46ce700) #4 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::_M_default_append(unsigned long) <null> (wesnoth-debug+0x46cc99f) #5 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::resize(unsigned long) <null> (wesnoth-debug+0x46c9134) #6 gui2::grid::set_rows_cols(unsigned int, unsigned int) src/gui/widgets/grid.cpp:737 (wesnoth-debug+0x46b8a57) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:457 (wesnoth-debug+0x4236ec3) #8 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #9 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #10 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #11 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #12 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #13 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #14 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #15 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #16 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #17 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #18 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #19 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #20 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #21 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #22 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #23 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #24 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #25 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #26 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #27 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #28 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #29 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #30 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #31 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #32 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #33 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #34 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #35 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #36 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #37 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/unique_ptr.h:147 in std::__uniq_ptr_impl<gui2::widget, std::default_delete<gui2::widget> >::_M_ptr() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b64000f8700 by main thread: #0 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c8184) #1 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #2 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #3 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #4 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #5 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #6 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #7 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #8 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #9 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #10 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #11 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #12 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #13 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #14 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #15 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #16 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #17 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #18 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #19 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #20 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #21 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #22 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #23 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #24 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #25 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #26 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #27 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #28 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #29 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #30 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #31 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #32 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #33 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #34 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f8700 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1056 at 0x7b64000f8700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_horizontal_scrollbar::build() const src/gui/widgets/horizontal_scrollbar.cpp:219 (wesnoth-debug+0x39ebacc) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #5 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #6 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #8 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #9 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/grid_private.hpp:67 in gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f893c by main thread: #0 gui2::widget::recursive_is_visible(gui2::widget const*, bool) const src/gui/widgets/widget.cpp:605 (wesnoth-debug+0x47d0038) #1 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:618 (wesnoth-debug+0x47d037e) #2 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #3 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #7 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #8 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #9 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #10 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #11 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #12 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #13 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #14 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #15 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #16 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #17 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #18 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #19 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #25 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f8938 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1056 at 0x7b64000f8700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_horizontal_scrollbar::build() const src/gui/widgets/horizontal_scrollbar.cpp:219 (wesnoth-debug+0x39ebacc) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #5 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #6 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #8 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #9 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:605 in gui2::widget::recursive_is_visible(gui2::widget const*, bool) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b64000f88f8 by main thread: #0 gui2::widget::recursive_is_visible(gui2::widget const*, bool) const src/gui/widgets/widget.cpp:610 (wesnoth-debug+0x47d023a) #1 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:618 (wesnoth-debug+0x47d037e) #2 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #3 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #7 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #8 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #9 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #10 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #11 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #12 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #13 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #14 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #15 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #16 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #17 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #18 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #19 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #25 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f88f8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1056 at 0x7b64000f8700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_horizontal_scrollbar::build() const src/gui/widgets/horizontal_scrollbar.cpp:219 (wesnoth-debug+0x39ebacc) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #5 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #6 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #8 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #9 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:610 in gui2::widget::recursive_is_visible(gui2::widget const*, bool) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f890c by main thread: #0 gui2::widget::get_size() const src/gui/widgets/widget.cpp:304 (wesnoth-debug+0x47ca488) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca6e0) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #8 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #9 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #10 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #11 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #12 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #13 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #14 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #15 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #16 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #17 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #18 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #19 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #20 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #21 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #22 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #23 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #26 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f8908 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1056 at 0x7b64000f8700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_horizontal_scrollbar::build() const src/gui/widgets/horizontal_scrollbar.cpp:219 (wesnoth-debug+0x39ebacc) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #5 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #6 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #8 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #9 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:304 in gui2::widget::get_size() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f8904 by main thread: #0 gui2::widget::get_origin() const src/gui/widgets/widget.cpp:299 (wesnoth-debug+0x47ca232) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca7fe) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #8 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #9 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #10 gui2::widget* gui2::scrollbar_container_implementation::find_at<gui2::widget>(utils::const_clone<gui2::scrollbar_container, gui2::widget>::reference, point const&, bool) src/gui/widgets/scrollbar_container_private.hpp:65 (wesnoth-debug+0x47363d3) #11 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:475 (wesnoth-debug+0x471433f) #12 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #13 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #14 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #15 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #16 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #17 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #18 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #19 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #20 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #21 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #22 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #23 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #26 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f8900 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1056 at 0x7b64000f8700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_horizontal_scrollbar::build() const src/gui/widgets/horizontal_scrollbar.cpp:219 (wesnoth-debug+0x39ebacc) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #5 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #6 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:165 (wesnoth-debug+0x3b2a11d) #7 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #8 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #9 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:299 in gui2::widget::get_origin() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b7000134a0c by main thread: #0 gui2::widget::get_size() const src/gui/widgets/widget.cpp:304 (wesnoth-debug+0x47ca488) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca6e0) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:477 (wesnoth-debug+0x471443e) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #9 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #10 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #11 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #13 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #14 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #15 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #16 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #17 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #18 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #19 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #20 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #21 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #22 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #23 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #24 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #25 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #26 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #27 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134a08 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:304 in gui2::widget::get_size() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b7000134a04 by main thread: #0 gui2::widget::get_origin() const src/gui/widgets/widget.cpp:299 (wesnoth-debug+0x47ca232) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca7fe) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::scrollbar_container::find_at(point const&, bool) src/gui/widgets/scrollbar_container.cpp:477 (wesnoth-debug+0x471443e) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #9 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #10 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #11 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #13 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #14 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #15 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #16 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #17 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #18 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #19 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #20 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #21 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #22 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #23 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #24 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #25 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #26 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #27 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b7000134a00 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1832 at 0x7b7000134800 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_scrollbar_panel::build() const src/gui/widgets/scrollbar_panel.cpp:154 (wesnoth-debug+0x3b29a0c) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:299 in gui2::widget::get_origin() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f933c by main thread: #0 gui2::widget::recursive_is_visible(gui2::widget const*, bool) const src/gui/widgets/widget.cpp:605 (wesnoth-debug+0x47d0038) #1 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:618 (wesnoth-debug+0x47d037e) #2 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #3 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #7 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #8 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #9 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #10 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #11 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #13 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #14 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #15 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #16 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #17 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #18 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #19 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #20 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #21 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #22 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #23 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #24 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #25 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #26 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #27 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #28 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #29 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #30 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #31 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f9338 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1032 at 0x7b64000f9100 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_button::build() const src/gui/widgets/button.cpp:247 (wesnoth-debug+0x39718e0) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:605 in gui2::widget::recursive_is_visible(gui2::widget const*, bool) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b64000f92f8 by main thread: #0 gui2::widget::recursive_is_visible(gui2::widget const*, bool) const src/gui/widgets/widget.cpp:610 (wesnoth-debug+0x47d023a) #1 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:618 (wesnoth-debug+0x47d037e) #2 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #3 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #4 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #5 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #6 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #7 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #8 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #9 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #10 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #11 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #13 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #14 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #15 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #16 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #17 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #18 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #19 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #20 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #21 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #22 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #23 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #24 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #25 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #26 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #27 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #28 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #29 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #30 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #31 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f92f8 by thread T11: [failed to restore the stack] Location is heap block of size 1032 at 0x7b64000f9100 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_button::build() const src/gui/widgets/button.cpp:247 (wesnoth-debug+0x39718e0) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:610 in gui2::widget::recursive_is_visible(gui2::widget const*, bool) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f930c by main thread: #0 gui2::widget::get_size() const src/gui/widgets/widget.cpp:304 (wesnoth-debug+0x47ca488) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca6e0) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #9 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #10 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #11 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #13 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #14 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #15 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #16 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #17 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #18 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #19 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #20 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #21 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #22 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #23 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #24 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #25 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #26 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #27 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 4 at 0x7b64000f930c by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1032 at 0x7b64000f9100 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_button::build() const src/gui/widgets/button.cpp:247 (wesnoth-debug+0x39718e0) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:304 in gui2::widget::get_size() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f9308 by main thread: #0 gui2::widget::get_size() const src/gui/widgets/widget.cpp:304 (wesnoth-debug+0x47ca58e) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca6e0) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #9 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #10 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #11 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #13 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #14 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #15 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #16 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #17 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #18 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #19 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #20 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #21 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #22 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #23 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #24 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #25 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #26 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #27 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 4 at 0x7b64000f9308 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1032 at 0x7b64000f9100 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_button::build() const src/gui/widgets/button.cpp:247 (wesnoth-debug+0x39718e0) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:304 in gui2::widget::get_size() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b64000f9304 by main thread: #0 gui2::widget::get_origin() const src/gui/widgets/widget.cpp:299 (wesnoth-debug+0x47ca232) #1 gui2::widget::get_rectangle() const src/gui/widgets/widget.cpp:309 (wesnoth-debug+0x47ca7fe) #2 gui2::widget::is_at(point const&, bool) const src/gui/widgets/widget.cpp:622 (wesnoth-debug+0x47d0483) #3 gui2::widget::find_at(point const&, bool) src/gui/widgets/widget.cpp:572 (wesnoth-debug+0x47cfae4) #4 gui2::styled_widget::find_at(point const&, bool) src/gui/widgets/styled_widget.cpp:291 (wesnoth-debug+0x4760da1) #5 gui2::widget* gui2::grid_implementation::find_at<gui2::widget>(utils::const_clone<gui2::grid, gui2::widget>::reference, point const&, bool) src/gui/widgets/grid_private.hpp:67 (wesnoth-debug+0x46c828b) #6 gui2::grid::find_at(point const&, bool) src/gui/widgets/grid.cpp:645 (wesnoth-debug+0x46b6e3b) #7 gui2::container_base::find_at(point const&, bool) src/gui/widgets/container_base.cpp:223 (wesnoth-debug+0x4391c80) #8 gui2::window::find_at(point const&, bool) src/gui/widgets/window.cpp:814 (wesnoth-debug+0x3c4aec3) #9 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:174 (wesnoth-debug+0x41c6de6) #10 void std::__invoke_impl<void, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(std::__invoke_memfun_deref, void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42082e8) #11 std::__invoke_result<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>::type std::__invoke<void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event, bool&, point const&>(void (gui2::event::mouse_motion::*&)(gui2::event::ui_event, bool&, point const&), gui2::event::mouse_motion*&, gui2::event::ui_event&&, bool&, point const&) /usr/include/c++/7/bits/invoke.h:95 (wesnoth-debug+0x4205f53) #12 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&, 0ul, 1ul, 2ul, 3ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4202d72) #13 void std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x41f8904) #14 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&), std::_Bind<void (gui2::event::mouse_motion::*(gui2::event::mouse_motion*, boost::arg<2>, boost::arg<3>, boost::arg<5>))(gui2::event::ui_event, bool&, point const&)> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, point const&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x41e03e3) #15 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419c484) #16 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418e5e9) #17 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&, point const&)>, point const&>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*, point const&) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188b13) #18 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x41826a1) #19 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211330) #20 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420cb13) #21 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #22 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #23 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #24 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #25 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #26 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #27 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000f9300 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 1032 at 0x7b64000f9100 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_button::build() const src/gui/widgets/button.cpp:247 (wesnoth-debug+0x39718e0) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::container_base::init_grid(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/container_base.cpp:272 (wesnoth-debug+0x439318b) #4 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:72 (wesnoth-debug+0x422f777) #5 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #11 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #12 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #13 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #14 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #15 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #16 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #17 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #18 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #19 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #20 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #21 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #22 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #27 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:299 in gui2::widget::get_origin() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b1c01e79ba0 by main thread: #0 std::less<gui2::event::ui_event>::operator()(gui2::event::ui_event const&, gui2::event::ui_event const&) const /usr/include/c++/7/bits/stl_function.h:386 (wesnoth-debug+0x3979847) #1 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >*, std::_Rb_tree_node_base*, gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1872 (wesnoth-debug+0x397d9aa) #2 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1187 (wesnoth-debug+0x397ab24) #3 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:1234 (wesnoth-debug+0x397958e) #4 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:489 (wesnoth-debug+0x3977c48) #5 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<1> >::value, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::type& gui2::event::dispatcher_implementation::event_signal<mpl_::int_<1> >(gui2::event::dispatcher&, gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:91 (wesnoth-debug+0x41c4f59) #6 bool gui2::event::dispatcher_implementation::has_handler::oper<mpl_::int_<1> >(gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:154 (wesnoth-debug+0x41c48e7) #7 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:205 (wesnoth-debug+0x41c3cdd) #8 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c2981) #9 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c13b5) #10 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c011f) #11 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41beea1) #12 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41bdc3b) #13 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bc7e3) #14 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bb335) #15 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b951b) #16 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b6ee9) #17 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b21b9) #18 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41ac065) #19 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a6fbb) #20 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a14d1) #21 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41985f5) #22 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x418bbc7) #23 bool gui2::event::find<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:246 (wesnoth-debug+0x4186fec) #24 gui2::event::dispatcher::has_event(gui2::event::ui_event, gui2::event::dispatcher::event_queue_type) src/gui/core/event/dispatcher.cpp:78 (wesnoth-debug+0x418225d) #25 std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > > gui2::event::implementation::build_event_chain<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >(gui2::event::ui_event, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:310 (wesnoth-debug+0x418d7e5) #26 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:502 (wesnoth-debug+0x418895f) #27 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #28 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #29 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #30 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #31 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #32 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #33 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #34 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #35 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #36 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #37 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #38 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #39 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #40 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #41 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1c01e79ba0 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 112 at 0x7b1c01e79b80 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3980b6a) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397f8ea) #3 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x397daf1) #4 std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >* std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x397ac5d) #5 std::_Rb_tree_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x3979ab9) #6 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x3977e2a) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x3976080) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_function.h:386 in std::less<gui2::event::ui_event>::operator()(gui2::event::ui_event const&, gui2::event::ui_event const&) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b1c01e79b90 by main thread: #0 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_S_left(std::_Rb_tree_node_base*) /usr/include/c++/7/bits/stl_tree.h:764 (wesnoth-debug+0x397f836) #1 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >*, std::_Rb_tree_node_base*, gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1873 (wesnoth-debug+0x397d9c5) #2 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_tree.h:1187 (wesnoth-debug+0x397ab24) #3 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::lower_bound(gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:1234 (wesnoth-debug+0x397958e) #4 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:489 (wesnoth-debug+0x3977c48) #5 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<1> >::value, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::type& gui2::event::dispatcher_implementation::event_signal<mpl_::int_<1> >(gui2::event::dispatcher&, gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:91 (wesnoth-debug+0x41c4f59) #6 bool gui2::event::dispatcher_implementation::has_handler::oper<mpl_::int_<1> >(gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:154 (wesnoth-debug+0x41c48e7) #7 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:205 (wesnoth-debug+0x41c3cdd) #8 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c2981) #9 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c13b5) #10 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c011f) #11 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41beea1) #12 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41bdc3b) #13 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bc7e3) #14 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bb335) #15 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b951b) #16 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b6ee9) #17 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b21b9) #18 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41ac065) #19 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a6fbb) #20 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a14d1) #21 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41985f5) #22 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x418bbc7) #23 bool gui2::event::find<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:246 (wesnoth-debug+0x4186fec) #24 gui2::event::dispatcher::has_event(gui2::event::ui_event, gui2::event::dispatcher::event_queue_type) src/gui/core/event/dispatcher.cpp:78 (wesnoth-debug+0x418225d) #25 std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > > gui2::event::implementation::build_event_chain<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >(gui2::event::ui_event, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:310 (wesnoth-debug+0x418d7e5) #26 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:502 (wesnoth-debug+0x418895f) #27 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #28 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #29 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #30 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #31 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #32 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #33 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #34 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #35 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #36 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #37 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #38 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #39 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #40 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #41 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1c01e79b90 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 112 at 0x7b1c01e79b80 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3980b6a) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397f8ea) #3 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x397daf1) #4 std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >* std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x397ac5d) #5 std::_Rb_tree_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x3979ab9) #6 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x3977e2a) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x3976080) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_tree.h:764 in std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_S_left(std::_Rb_tree_node_base*)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b1c01e79ba8 by main thread: #0 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::empty() const <null> (wesnoth-debug+0x41a0f69) #1 bool gui2::event::dispatcher_implementation::has_handler::oper<mpl_::int_<1> >(gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:154 (wesnoth-debug+0x41c4914) #2 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:205 (wesnoth-debug+0x41c3cdd) #3 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c2981) #4 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c13b5) #5 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c011f) #6 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41beea1) #7 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41bdc3b) #8 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bc7e3) #9 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bb335) #10 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b951b) #11 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b6ee9) #12 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b21b9) #13 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41ac065) #14 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a6fbb) #15 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a14d1) #16 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41985f5) #17 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x418bbc7) #18 bool gui2::event::find<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:246 (wesnoth-debug+0x4186fec) #19 gui2::event::dispatcher::has_event(gui2::event::ui_event, gui2::event::dispatcher::event_queue_type) src/gui/core/event/dispatcher.cpp:78 (wesnoth-debug+0x418225d) #20 std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > > gui2::event::implementation::build_event_chain<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >(gui2::event::ui_event, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:310 (wesnoth-debug+0x418d7e5) #21 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:502 (wesnoth-debug+0x418895f) #22 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #23 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #24 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #25 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #26 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #27 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #28 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #29 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #30 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #31 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #32 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #33 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #34 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #35 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #36 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1c01e79ba8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 112 at 0x7b1c01e79b80 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3980b6a) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397f8ea) #3 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x397daf1) #4 std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >* std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x397ac5d) #5 std::_Rb_tree_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x3979ab9) #6 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x3977e2a) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x3976080) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x41a0f69) in std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::empty() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b1c01e79bd8 by main thread: #0 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::empty() const <null> (wesnoth-debug+0x41a0f69) #1 bool gui2::event::dispatcher_implementation::has_handler::oper<mpl_::int_<1> >(gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:164 (wesnoth-debug+0x41c4af2) #2 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:205 (wesnoth-debug+0x41c3cdd) #3 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c2981) #4 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c13b5) #5 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c011f) #6 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41beea1) #7 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41bdc3b) #8 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bc7e3) #9 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bb335) #10 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b951b) #11 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b6ee9) #12 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b21b9) #13 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41ac065) #14 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a6fbb) #15 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a14d1) #16 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41985f5) #17 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x418bbc7) #18 bool gui2::event::find<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:246 (wesnoth-debug+0x4186fec) #19 gui2::event::dispatcher::has_event(gui2::event::ui_event, gui2::event::dispatcher::event_queue_type) src/gui/core/event/dispatcher.cpp:78 (wesnoth-debug+0x418225d) #20 std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > > gui2::event::implementation::build_event_chain<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >(gui2::event::ui_event, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:310 (wesnoth-debug+0x418d7e5) #21 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:502 (wesnoth-debug+0x418895f) #22 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #23 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #24 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #25 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #26 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #27 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #28 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #29 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #30 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #31 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #32 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #33 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #34 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #35 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #36 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1c01e79bd8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 112 at 0x7b1c01e79b80 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3980b6a) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397f8ea) #3 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x397daf1) #4 std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >* std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x397ac5d) #5 std::_Rb_tree_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x3979ab9) #6 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x3977e2a) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x3976080) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x41a0f69) in std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::empty() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b1c01e79bc0 by main thread: #0 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::empty() const <null> (wesnoth-debug+0x41a0f69) #1 bool gui2::event::dispatcher_implementation::has_handler::oper<mpl_::int_<1> >(gui2::event::ui_event) src/gui/core/event/dispatcher_private.hpp:159 (wesnoth-debug+0x41c4a03) #2 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:205 (wesnoth-debug+0x41c3cdd) #3 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c2981) #4 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c13b5) #5 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41c011f) #6 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41beea1) #7 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:212 (wesnoth-debug+0x41bdc3b) #8 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bc7e3) #9 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41bb335) #10 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b951b) #11 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b6ee9) #12 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41b21b9) #13 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41ac065) #14 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a6fbb) #15 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41a14d1) #16 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x41985f5) #17 bool gui2::event::implementation::find<false>::execute<boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<mpl_::int_<25>, boost::mpl::s_item<mpl_::int_<24>, boost::mpl::s_item<mpl_::int_<23>, boost::mpl::s_item<mpl_::int_<22>, boost::mpl::s_item<mpl_::int_<19>, boost::mpl::s_item<mpl_::int_<18>, boost::mpl::s_item<mpl_::int_<17>, boost::mpl::s_item<mpl_::int_<16>, boost::mpl::s_item<mpl_::int_<13>, boost::mpl::s_item<mpl_::int_<12>, boost::mpl::s_item<mpl_::int_<11>, boost::mpl::s_item<mpl_::int_<10>, boost::mpl::s_item<mpl_::int_<7>, boost::mpl::s_item<mpl_::int_<5>, boost::mpl::s_item<mpl_::int_<2>, boost::mpl::s_item<mpl_::int_<1>, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > >*, boost::mpl::s_iter<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na> >*, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) <null> (wesnoth-debug+0x418bbc7) #18 bool gui2::event::find<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler>(gui2::event::ui_event, gui2::event::dispatcher_implementation::has_handler) src/gui/core/event/dispatcher_private.hpp:246 (wesnoth-debug+0x4186fec) #19 gui2::event::dispatcher::has_event(gui2::event::ui_event, gui2::event::dispatcher::event_queue_type) src/gui/core/event/dispatcher.cpp:78 (wesnoth-debug+0x418225d) #20 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:428 (wesnoth-debug+0x418cec0) #21 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #22 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #23 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #24 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #25 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #26 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #27 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #28 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #29 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #30 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #31 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #32 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #33 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #34 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #35 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #36 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1c01e79bc0 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 112 at 0x7b1c01e79b80 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3980b6a) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397f8ea) #3 std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x397daf1) #4 std::_Rb_tree_node<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >* std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x397ac5d) #5 std::_Rb_tree_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > std::_Rb_tree<gui2::event::ui_event, std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >, std::_Select1st<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >, std::piecewise_construct_t const&, std::tuple<gui2::event::ui_event const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x3979ab9) #6 std::map<gui2::event::ui_event, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::less<gui2::event::ui_event>, std::allocator<std::pair<gui2::event::ui_event const, gui2::event::dispatcher::signal_type<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > > >::operator[](gui2::event::ui_event const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x3977e2a) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x3976080) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x41a0f69) in std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::empty() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b0c002ce670 by main thread: #0 std::_Function_base::_M_empty() const /usr/include/c++/7/bits/std_function.h:279 (wesnoth-debug+0x393dacd) #1 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:704 (wesnoth-debug+0x419b81d) #2 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #3 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #4 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #5 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #6 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #7 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #8 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #9 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #10 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #11 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #12 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #13 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #14 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #15 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #16 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #17 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #18 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b0c002ce670 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 48 at 0x7b0c002ce650 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3981297) #2 std::allocator_traits<std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >::allocate(std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397fc67) #3 std::__cxx11::_List_base<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_get_node() /usr/include/c++/7/bits/stl_list.h:383 (wesnoth-debug+0x397e917) #4 std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >* std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_create_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:572 (wesnoth-debug+0x397bd1c) #5 void std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_insert<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::_List_iterator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1801 (wesnoth-debug+0x3979da6) #6 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::push_back(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1118 (wesnoth-debug+0x3978067) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x39760da) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/std_function.h:279 in std::_Function_base::_M_empty() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b0c002ce678 by main thread: #0 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b85b) #1 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #2 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #3 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #4 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #5 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #6 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #7 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #8 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #9 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #10 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #11 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #12 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #13 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #14 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #15 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #16 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #17 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b0c002ce678 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 48 at 0x7b0c002ce650 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3981297) #2 std::allocator_traits<std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >::allocate(std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397fc67) #3 std::__cxx11::_List_base<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_get_node() /usr/include/c++/7/bits/stl_list.h:383 (wesnoth-debug+0x397e917) #4 std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >* std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_create_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:572 (wesnoth-debug+0x397bd1c) #5 void std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_insert<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::_List_iterator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1801 (wesnoth-debug+0x3979da6) #6 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::push_back(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1118 (wesnoth-debug+0x3978067) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x39760da) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/std_function.h:706 in std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b0c002ce660 by main thread: #0 std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_get_pointer(std::_Any_data const&) <null> (wesnoth-debug+0x3c7aff5) #1 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6f956) #2 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #3 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #4 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #5 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #6 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #7 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #8 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #9 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #10 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #11 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #12 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #13 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #14 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #15 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #16 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #17 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #18 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #19 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b0c002ce660 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 48 at 0x7b0c002ce650 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x3981297) #2 std::allocator_traits<std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >::allocate(std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x397fc67) #3 std::__cxx11::_List_base<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_get_node() /usr/include/c++/7/bits/stl_list.h:383 (wesnoth-debug+0x397e917) #4 std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >* std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_create_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:572 (wesnoth-debug+0x397bd1c) #5 void std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_insert<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::_List_iterator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1801 (wesnoth-debug+0x3979da6) #6 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::push_back(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1118 (wesnoth-debug+0x3978067) #7 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x39760da) #8 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #9 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #10 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x3c7aff5) in std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_get_pointer(std::_Any_data const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b080055e0b0 by main thread: #0 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c915f5) #1 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #2 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #3 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #4 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #5 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #6 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #7 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #8 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #9 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #10 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #11 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #12 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #13 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #14 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #15 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #16 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #17 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #18 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #19 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #20 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #21 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #22 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b080055e0b0 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 24 at 0x7b080055e0a0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_clone(std::_Any_data&, std::_Any_data const&, std::integral_constant<bool, false>) /usr/include/c++/7/bits/std_function.h:192 (wesnoth-debug+0x3c7b29d) #2 std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) /usr/include/c++/7/bits/std_function.h:227 (wesnoth-debug+0x3c6fbb4) #3 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::function(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/std_function.h:677 (wesnoth-debug+0x3981449) #4 void __gnu_cxx::new_allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::construct<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>*, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/ext/new_allocator.h:136 (wesnoth-debug+0x397fdee) #5 void std::allocator_traits<std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >::construct<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >&, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>*, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/alloc_traits.h:475 (wesnoth-debug+0x397ec6a) #6 std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >* std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_create_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:575 (wesnoth-debug+0x397be11) #7 void std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_insert<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::_List_iterator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1801 (wesnoth-debug+0x3979da6) #8 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::push_back(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1118 (wesnoth-debug+0x3978067) #9 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x39760da) #10 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #11 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #12 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/invoke.h:73 in void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b080055e0a8 by main thread: #0 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9162d) #1 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #2 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #3 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #4 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #5 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #6 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #7 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #8 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #9 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #10 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #11 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #12 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #13 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #14 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #15 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #16 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #17 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #18 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #19 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #20 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #21 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #22 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b080055e0a8 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 24 at 0x7b080055e0a0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_clone(std::_Any_data&, std::_Any_data const&, std::integral_constant<bool, false>) /usr/include/c++/7/bits/std_function.h:192 (wesnoth-debug+0x3c7b29d) #2 std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) /usr/include/c++/7/bits/std_function.h:227 (wesnoth-debug+0x3c6fbb4) #3 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::function(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/std_function.h:677 (wesnoth-debug+0x3981449) #4 void __gnu_cxx::new_allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::construct<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>*, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/ext/new_allocator.h:136 (wesnoth-debug+0x397fdee) #5 void std::allocator_traits<std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >::construct<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >&, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>*, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/alloc_traits.h:475 (wesnoth-debug+0x397ec6a) #6 std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >* std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_create_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:575 (wesnoth-debug+0x397be11) #7 void std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_insert<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::_List_iterator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1801 (wesnoth-debug+0x3979da6) #8 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::push_back(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1118 (wesnoth-debug+0x3978067) #9 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x39760da) #10 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #11 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #12 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/invoke.h:73 in void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b080055e0a0 by main thread: #0 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c91743) #1 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #2 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #3 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #4 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #5 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #6 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #7 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #8 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #9 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #10 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #11 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #12 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #13 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #14 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #15 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #16 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #17 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #18 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #19 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #20 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #21 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #22 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b080055e0a0 by thread T11: [failed to restore the stack] As if synchronized via sleep: #0 nanosleep <null> (libtsan.so.0+0x49490) #1 <null> <null> (libSDL2-2.0.so.0+0xdd914) #2 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #4 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #5 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #6 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #7 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #8 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #9 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #10 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #11 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Location is heap block of size 24 at 0x7b080055e0a0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_clone(std::_Any_data&, std::_Any_data const&, std::integral_constant<bool, false>) /usr/include/c++/7/bits/std_function.h:192 (wesnoth-debug+0x3c7b29d) #2 std::_Function_base::_Base_manager<std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) /usr/include/c++/7/bits/std_function.h:227 (wesnoth-debug+0x3c6fbb4) #3 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::function(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/std_function.h:677 (wesnoth-debug+0x3981449) #4 void __gnu_cxx::new_allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::construct<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>*, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/ext/new_allocator.h:136 (wesnoth-debug+0x397fdee) #5 void std::allocator_traits<std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > > >::construct<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::allocator<std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >&, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>*, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/alloc_traits.h:475 (wesnoth-debug+0x397ec6a) #6 std::_List_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >* std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_create_node<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:575 (wesnoth-debug+0x397be11) #7 void std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::_M_insert<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&>(std::_List_iterator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1801 (wesnoth-debug+0x3979da6) #8 std::__cxx11::list<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>, std::allocator<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> > >::push_back(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) /usr/include/c++/7/bits/stl_list.h:1118 (wesnoth-debug+0x3978067) #9 gui2::event::dispatcher::signal_queue<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> >::connect_signal(gui2::event::ui_event, gui2::event::dispatcher::queue_position, std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&) src/gui/core/event/dispatcher.hpp:729 (wesnoth-debug+0x39760da) #10 std::enable_if<boost::mpl::has_key<boost::mpl::set<mpl_::int_<1>, mpl_::int_<2>, mpl_::int_<5>, mpl_::int_<7>, mpl_::int_<10>, mpl_::int_<11>, mpl_::int_<12>, mpl_::int_<13>, mpl_::int_<16>, mpl_::int_<17>, mpl_::int_<18>, mpl_::int_<19>, mpl_::int_<22>, mpl_::int_<23>, mpl_::int_<24>, mpl_::int_<25>, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mpl_::int_<(gui2::event::ui_event)1> >::value, void>::type gui2::event::dispatcher::connect_signal<(gui2::event::ui_event)1>(std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)> const&, gui2::event::dispatcher::queue_position) src/gui/core/event/dispatcher.hpp:365 (wesnoth-debug+0x3c64c81) #11 gui2::window::window(gui2::builder_window::window_resolution const*) src/gui/widgets/window.cpp:321 (wesnoth-debug+0x3c40c29) #12 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee5b) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/invoke.h:73 in void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b74000e9991 by main thread: #0 gui2::window::draw() src/gui/widgets/window.cpp:614 (wesnoth-debug+0x3c475ef) #1 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #2 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #3 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #4 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #5 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #6 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #7 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #8 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #9 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #10 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #11 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #12 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #13 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #14 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #15 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #16 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #17 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #18 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #19 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #20 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #21 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #22 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #23 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b74000e9991 by thread T11: #0 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:524 (wesnoth-debug+0x3c45a71) #1 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:255 (wesnoth-debug+0x4a8f910) #2 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #3 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #4 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #5 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #6 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #7 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #8 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #9 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #10 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #11 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #12 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #13 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #14 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #15 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #16 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #17 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #18 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #19 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #20 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #21 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #22 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #23 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 2496 at 0x7b74000e9200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee24) #2 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #8 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #9 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #10 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #11 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #12 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #13 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #14 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #15 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #16 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #17 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #18 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #19 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #20 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #21 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #22 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #23 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #24 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/window.cpp:614 in gui2::window::draw()====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b74000e9900 by main thread: #0 gui2::window::draw() src/gui/widgets/window.cpp:621 (wesnoth-debug+0x3c47877) #1 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #2 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #3 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #4 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #5 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #6 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #7 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #8 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #9 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #10 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #11 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #12 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #13 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #14 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #15 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #16 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #17 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #18 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #19 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #20 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #21 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #22 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #23 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b74000e9900 by thread T11: #0 gui2::window::invalidate_layout() src/gui/widgets/window.cpp:809 (wesnoth-debug+0x3c4ad99) #1 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:523 (wesnoth-debug+0x3c4595f) #2 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:255 (wesnoth-debug+0x4a8f910) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #8 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #9 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #10 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #11 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #12 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #13 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #14 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #15 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #16 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #17 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #18 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #19 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #20 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #21 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #22 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #23 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #24 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 2496 at 0x7b74000e9200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee24) #2 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #8 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #9 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #10 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #11 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #12 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #13 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #14 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #15 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #16 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #17 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #18 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #19 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #20 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #21 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #22 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #23 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #24 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/window.cpp:621 in gui2::window::draw()====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b74000e9992 by main thread: #0 gui2::window::draw() src/gui/widgets/window.cpp:625 (wesnoth-debug+0x3c479b1) #1 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #2 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #3 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #4 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #5 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #6 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #7 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #8 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #9 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #10 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #11 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #12 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #13 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #14 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #15 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #16 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #17 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #18 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #19 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #20 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #21 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #22 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #23 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b74000e9992 by thread T11: #0 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:510 (wesnoth-debug+0x3c4516e) #1 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:255 (wesnoth-debug+0x4a8f910) #2 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #3 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #4 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #5 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #6 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #7 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #8 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #9 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #10 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #11 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #12 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #13 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #14 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #15 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #16 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #17 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #18 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #19 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #20 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #21 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #22 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #23 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 2496 at 0x7b74000e9200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:53 (wesnoth-debug+0x422ee24) #2 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #8 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #9 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #10 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #11 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #12 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #13 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #14 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #15 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #16 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #17 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #18 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #19 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #20 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #21 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #22 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #23 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #24 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/window.cpp:625 in gui2::window::draw()====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b64000fa210 by main thread: #0 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:194 (wesnoth-debug+0x47c82b3) #1 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #2 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #3 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #4 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #5 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #6 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #7 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #15 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #16 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #17 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #18 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #25 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000fa210 by thread T11: #0 gui2::widget::set_layout_size(point const&) src/gui/widgets/widget.cpp:334 (wesnoth-debug+0x47cae50) #1 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:330 (wesnoth-debug+0x476197b) #2 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #8 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #14 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #15 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #16 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #17 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #18 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #19 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #20 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #21 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #22 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #23 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #24 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #25 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #26 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #27 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #28 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #29 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #30 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000fa000 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:194 in gui2::widget::get_best_size() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b64000fa280 by main thread: #0 std::__shared_ptr<t_string_base const, (__gnu_cxx::_Lock_policy)2>::get() const /usr/include/c++/7/bits/shared_ptr_base.h:1258 (wesnoth-debug+0x39512dd) #1 std::__shared_ptr_access<t_string_base const, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get() const /usr/include/c++/7/bits/shared_ptr_base.h:975 (wesnoth-debug+0x394951b) #2 std::__shared_ptr_access<t_string_base const, (__gnu_cxx::_Lock_policy)2, false, false>::operator*() const /usr/include/c++/7/bits/shared_ptr_base.h:962 (wesnoth-debug+0x3942600) #3 t_string::get() const src/tstring.hpp:195 (wesnoth-debug+0x393d878) #4 t_string::empty() const src/tstring.hpp:182 (wesnoth-debug+0x393d6b1) #5 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:247 (wesnoth-debug+0x475f3c5) #6 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #7 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #8 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #9 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #10 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #11 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #12 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #13 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #14 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #15 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #16 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #17 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #18 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #19 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #20 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b64000fa280 by thread T11: #0 std::__shared_ptr<t_string_base const, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<t_string_base const, (__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:1034 (wesnoth-debug+0x65d5d19) #1 std::shared_ptr<t_string_base const>::operator=(std::shared_ptr<t_string_base const> const&) /usr/include/c++/7/bits/shared_ptr.h:93 (wesnoth-debug+0x65d5e31) #2 t_string::operator=(t_string const&) src/tstring.cpp:635 (wesnoth-debug+0x65d502b) #3 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:329 (wesnoth-debug+0x4761861) #4 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #9 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000fa000 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:1258 in std::__shared_ptr<t_string_base const, (__gnu_cxx::_Lock_policy)2>::get() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b1400309434 by main thread: #0 t_string_base::str[abi:cxx11]() const src/tstring.cpp:563 (wesnoth-debug+0x65d4292) #1 t_string_base::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&() const src/tstring.hpp:101 (wesnoth-debug+0x393d63f) #2 t_string::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&() const src/tstring.hpp:185 (wesnoth-debug+0x393d766) #3 gui2::styled_widget::get_best_text_size(point, point) const src/gui/widgets/styled_widget.cpp:461 (wesnoth-debug+0x47667b7) #4 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:259 (wesnoth-debug+0x475fd9c) #5 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #6 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #7 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #15 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #16 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #17 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #18 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #19 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b1400309434 by thread T11: #0 t_string_base::t_string_base(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/tstring.cpp:259 (wesnoth-debug+0x65d1191) #1 t_string::t_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/tstring.cpp:624 (wesnoth-debug+0x65d4e73) #2 impl_gettext src/scripting/lua_common.cpp:73 (wesnoth-debug+0x4a7b7db) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:468 (wesnoth-debug+0x61b53a0) #5 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #6 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #7 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #8 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 72 at 0x7b14003093f0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 t_string::t_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/tstring.cpp:624 (wesnoth-debug+0x65d4e3b) #2 impl_gettext src/scripting/lua_common.cpp:73 (wesnoth-debug+0x4a7b7db) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:468 (wesnoth-debug+0x61b53a0) #5 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #6 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #7 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #8 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/tstring.cpp:563 in t_string_base::str[abi:cxx11]() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b1400309420 by main thread: #0 unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&) src/serialization/ucs4_convert_impl.hpp:98 (wesnoth-debug+0x3d9ace0) #1 ucs4_convert_impl::enableif<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::value_type>::type unicode_cast<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/serialization/unicode_cast.hpp:75 (wesnoth-debug+0x3d98dec) #2 font::pango_text::set_text(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) src/font/text.cpp:292 (wesnoth-debug+0x670b146) #3 gui2::styled_widget::get_best_text_size(point, point) const src/gui/widgets/styled_widget.cpp:461 (wesnoth-debug+0x47667c4) #4 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:259 (wesnoth-debug+0x475fd9c) #5 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #6 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #7 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #15 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #16 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #17 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #18 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #19 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1400309420 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 t_string::t_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/tstring.cpp:624 (wesnoth-debug+0x65d4e3b) #2 impl_gettext src/scripting/lua_common.cpp:73 (wesnoth-debug+0x4a7b7db) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:468 (wesnoth-debug+0x61b53a0) #5 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #6 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #7 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #8 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 72 at 0x7b14003093f0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 t_string::t_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/tstring.cpp:624 (wesnoth-debug+0x65d4e3b) #2 impl_gettext src/scripting/lua_common.cpp:73 (wesnoth-debug+0x4a7b7db) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:468 (wesnoth-debug+0x61b53a0) #5 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #6 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #7 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #8 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #9 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #10 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #11 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #12 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #13 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #14 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #15 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #16 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #17 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #18 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #19 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #20 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #21 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #22 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #23 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #24 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #25 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #26 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #27 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #28 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #29 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #30 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #31 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/serialization/ucs4_convert_impl.hpp:98 in unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b64000d8690 by main thread: #0 gui2::styled_widget::get_best_text_size(point, point) const src/gui/widgets/styled_widget.cpp:461 (wesnoth-debug+0x4766751) #1 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:259 (wesnoth-debug+0x475fd9c) #2 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #3 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #4 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #5 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #6 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #7 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #10 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #11 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #12 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #15 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #16 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #17 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #18 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #19 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #20 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #21 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #22 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #23 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #24 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #25 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #26 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #27 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #28 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #29 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #30 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #31 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #32 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #33 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #34 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #35 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #36 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #37 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #38 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #39 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #40 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b64000d8690 by thread T11: #0 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:341 (wesnoth-debug+0x4761e2e) #1 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #2 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #3 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #4 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #5 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #6 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #7 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #13 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #14 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #15 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #16 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #17 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #18 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #19 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #20 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #21 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #22 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #23 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #24 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #25 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #26 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #27 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #28 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #29 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000d8400 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/styled_widget.cpp:461 in gui2::styled_widget::get_best_text_size(point, point) const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b1400152e24 by main thread: #0 t_string_base::str[abi:cxx11]() const src/tstring.cpp:563 (wesnoth-debug+0x65d4292) #1 t_string_base::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&() const src/tstring.hpp:101 (wesnoth-debug+0x393d63f) #2 t_string::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&() const src/tstring.hpp:185 (wesnoth-debug+0x393d766) #3 gui2::styled_widget::get_best_text_size(point, point) const src/gui/widgets/styled_widget.cpp:461 (wesnoth-debug+0x47667b7) #4 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:259 (wesnoth-debug+0x475fd9c) #5 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #6 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #7 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #15 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #16 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #17 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #18 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #19 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b1400152e24 by thread T11: #0 t_string_base::t_string_base(char const*) src/tstring.cpp:330 (wesnoth-debug+0x65d1e17) #1 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c9f) #2 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #3 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #4 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #5 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 72 at 0x7b1400152de0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c6b) #2 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #3 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #4 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #5 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #6 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #7 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #8 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #9 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #10 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #11 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #12 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #13 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #14 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #15 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #16 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #17 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #18 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #19 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #20 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #21 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #22 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #23 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #24 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #25 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #26 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #27 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #28 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #29 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #30 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #31 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #32 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #33 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/tstring.cpp:563 in t_string_base::str[abi:cxx11]() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b3000052200 by main thread: #0 unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&) src/serialization/ucs4_convert_impl.hpp:98 (wesnoth-debug+0x3d9ace0) #1 ucs4_convert_impl::enableif<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::value_type>::type unicode_cast<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/serialization/unicode_cast.hpp:75 (wesnoth-debug+0x3d98dec) #2 font::pango_text::set_text(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) src/font/text.cpp:292 (wesnoth-debug+0x670b146) #3 gui2::styled_widget::get_best_text_size(point, point) const src/gui/widgets/styled_widget.cpp:461 (wesnoth-debug+0x47667c4) #4 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:259 (wesnoth-debug+0x475fd9c) #5 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #6 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #7 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #15 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #16 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #17 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #18 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #19 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b3000052200 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) /usr/include/c++/7/bits/basic_string.tcc:219 (wesnoth-debug+0x671f812) #2 t_string_base::t_string_base(char const*) src/tstring.cpp:330 (wesnoth-debug+0x65d1d86) #3 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c9f) #4 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #5 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #6 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 179 at 0x7b3000052200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) /usr/include/c++/7/bits/basic_string.tcc:219 (wesnoth-debug+0x671f812) #2 t_string_base::t_string_base(char const*) src/tstring.cpp:330 (wesnoth-debug+0x65d1d86) #3 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c9f) #4 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #5 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #6 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/serialization/ucs4_convert_impl.hpp:98 in unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b30000522a0 by main thread: #0 unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&) src/serialization/ucs4_convert_impl.hpp:115 (wesnoth-debug+0x3d9aebf) #1 ucs4_convert_impl::enableif<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::value_type>::type unicode_cast<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/serialization/unicode_cast.hpp:75 (wesnoth-debug+0x3d98dec) #2 font::pango_text::set_text(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) src/font/text.cpp:292 (wesnoth-debug+0x670b146) #3 gui2::styled_widget::get_best_text_size(point, point) const src/gui/widgets/styled_widget.cpp:461 (wesnoth-debug+0x47667c4) #4 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:259 (wesnoth-debug+0x475fd9c) #5 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #6 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #7 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #15 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #16 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #17 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #18 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #19 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b30000522a0 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) /usr/include/c++/7/bits/basic_string.tcc:219 (wesnoth-debug+0x671f812) #2 t_string_base::t_string_base(char const*) src/tstring.cpp:330 (wesnoth-debug+0x65d1d86) #3 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c9f) #4 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #5 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #6 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 179 at 0x7b3000052200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) /usr/include/c++/7/bits/basic_string.tcc:219 (wesnoth-debug+0x671f812) #2 t_string_base::t_string_base(char const*) src/tstring.cpp:330 (wesnoth-debug+0x65d1d86) #3 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c9f) #4 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #5 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #6 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/serialization/ucs4_convert_impl.hpp:115 in unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 1 at 0x7b30000522b0 by main thread: #0 unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&) src/serialization/ucs4_convert_impl.hpp:98 (wesnoth-debug+0x3d9ace0) #1 ucs4_convert_impl::enableif<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::value_type>::type unicode_cast<std::vector<unsigned int, std::allocator<unsigned int> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/serialization/unicode_cast.hpp:75 (wesnoth-debug+0x3d98dec) #2 font::pango_text::set_text(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) src/font/text.cpp:292 (wesnoth-debug+0x670b146) #3 gui2::styled_widget::get_best_text_size(point, point) const src/gui/widgets/styled_widget.cpp:461 (wesnoth-debug+0x47667c4) #4 gui2::styled_widget::calculate_best_size() const src/gui/widgets/styled_widget.cpp:259 (wesnoth-debug+0x475fd9c) #5 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #6 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #7 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #15 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #16 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #17 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #18 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #19 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b30000522b0 by thread T11: #0 memcpy <null> (libtsan.so.0+0x31065) #1 void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) /usr/include/c++/7/bits/basic_string.tcc:225 (wesnoth-debug+0x671f8af) #2 t_string_base::t_string_base(char const*) src/tstring.cpp:330 (wesnoth-debug+0x65d1d86) #3 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c9f) #4 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #5 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #6 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 179 at 0x7b3000052200 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) /usr/include/c++/7/bits/basic_string.tcc:219 (wesnoth-debug+0x671f812) #2 t_string_base::t_string_base(char const*) src/tstring.cpp:330 (wesnoth-debug+0x65d1d86) #3 t_string::t_string(char const*) src/tstring.cpp:614 (wesnoth-debug+0x65d4c9f) #4 t_string::operator=(char const*) src/tstring.cpp:641 (wesnoth-debug+0x65d5095) #5 luaW_totstring(lua_State*, int, t_string&) src/scripting/lua_common.cpp:573 (wesnoth-debug+0x4a7e806) #6 luaW_checktstring(lua_State*, int) src/scripting/lua_common.cpp:593 (wesnoth-debug+0x4a7e901) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:577 (wesnoth-debug+0x4a94c12) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/serialization/ucs4_convert_impl.hpp:98 in unsigned int ucs4_convert_impl::utf8_impl::read<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b6c0007c63c by main thread: #0 gui2::widget::get_visible() const src/gui/widgets/widget.cpp:502 (wesnoth-debug+0x47cea04) #1 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:750 (wesnoth-debug+0x46b95ef) #2 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #3 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #4 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #5 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #6 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #7 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #8 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #9 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #10 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #13 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #14 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #15 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #16 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #17 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #18 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #25 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 4 at 0x7b6c0007c63c by thread T11: #0 gui2::widget::set_visible(gui2::widget::visibility) src/gui/widgets/widget.cpp:483 (wesnoth-debug+0x47ce2f3) #1 lua_gui2::intf_set_dialog_visible(lua_State*) src/scripting/lua_gui2.cpp:923 (wesnoth-debug+0x4a98bb9) #2 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #3 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #4 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #5 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #6 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #7 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #13 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #14 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #15 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #16 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #17 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #18 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #19 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #20 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #21 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #22 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #23 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #24 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #25 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #26 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #27 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #28 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #29 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1752 at 0x7b6c0007c400 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_panel::build() const src/gui/widgets/panel.cpp:201 (wesnoth-debug+0x3ae7836) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:502 in gui2::widget::get_visible() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 4 at 0x7b640008c73c by main thread: #0 gui2::widget::get_visible() const src/gui/widgets/widget.cpp:502 (wesnoth-debug+0x47cea04) #1 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:750 (wesnoth-debug+0x46b95ef) #2 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #3 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #4 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #5 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #6 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #7 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #8 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #9 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #10 gui2::scrollbar_container::calculate_best_size() const src/gui/widgets/scrollbar_container.cpp:295 (wesnoth-debug+0x470fac7) #11 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #12 gui2::grid::child::get_best_size() const src/gui/widgets/grid.cpp:757 (wesnoth-debug+0x46b9e31) #13 gui2::grid::calculate_best_size() const src/gui/widgets/grid.cpp:436 (wesnoth-debug+0x46af5a4) #14 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #15 gui2::container_base::calculate_best_size() const src/gui/widgets/container_base.cpp:152 (wesnoth-debug+0x4390472) #16 gui2::widget::get_best_size() const src/gui/widgets/widget.cpp:196 (wesnoth-debug+0x47c8465) #17 gui2::window::layout() src/gui/widgets/window.cpp:892 (wesnoth-debug+0x3c4c4b9) #18 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #19 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #20 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #21 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #22 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #23 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #24 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #25 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #26 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #27 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #28 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #29 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #30 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #31 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #32 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #33 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #34 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #35 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #36 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #37 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #38 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #39 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #40 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #41 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 4 at 0x7b640008c73c by thread T11: #0 gui2::widget::set_visible(gui2::widget::visibility) src/gui/widgets/widget.cpp:483 (wesnoth-debug+0x47ce2f3) #1 lua_gui2::intf_set_dialog_visible(lua_State*) src/scripting/lua_gui2.cpp:923 (wesnoth-debug+0x4a98bb9) #2 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #3 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #4 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #5 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #6 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #7 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #13 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #14 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #15 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #16 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #17 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #18 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #19 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #20 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #21 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #22 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #23 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #24 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #25 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #26 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #27 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #28 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #29 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1032 at 0x7b640008c500 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_button::build() const src/gui/widgets/button.cpp:247 (wesnoth-debug+0x39718e0) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #5 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #6 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #7 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #8 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #14 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #15 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #16 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #17 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #18 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #19 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #20 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #21 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #22 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #23 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #24 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #25 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #26 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #27 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #28 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #29 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #30 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:502 in gui2::widget::get_visible() const====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 1 at 0x7b5400260818 by main thread: #0 gui2::canvas::set_is_dirty(bool) src/gui/core/canvas.hpp:180 (wesnoth-debug+0x3a0a357) #1 gui2::canvas::set_width(unsigned int) src/gui/core/canvas.hpp:145 (wesnoth-debug+0x476d23e) #2 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:270 (wesnoth-debug+0x47606d3) #3 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #4 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #5 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #6 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #7 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #8 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #9 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #10 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #15 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #16 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #17 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #18 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #20 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #21 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #22 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #23 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #26 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b5400260818 by thread T11: #0 gui2::canvas::set_is_dirty(bool) src/gui/core/canvas.hpp:180 (wesnoth-debug+0x3a0a357) #1 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:174 (wesnoth-debug+0x3a0a2b0) #2 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:395 (wesnoth-debug+0x4763f44) #3 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #4 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #9 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 576 at 0x7b5400260700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::canvas>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4772fe2) #2 std::allocator_traits<std::allocator<gui2::canvas> >::allocate(std::allocator<gui2::canvas>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4772627) #3 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x4771c06) #4 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_create_storage(unsigned long) /usr/include/c++/7/bits/stl_vector.h:187 (wesnoth-debug+0x4770870) #5 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_Vector_base(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:138 (wesnoth-debug+0x476f246) #6 std::vector<gui2::canvas, std::allocator<gui2::canvas> >::vector(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:284 (wesnoth-debug+0x476def8) #7 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:62 (wesnoth-debug+0x4757c42) #8 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #9 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #10 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #11 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #12 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #13 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/core/canvas.hpp:180 in gui2::canvas::set_is_dirty(bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b5400260740 by main thread: #0 surface::free_surface() src/sdl/surface.cpp:22 (wesnoth-debug+0x6a5e316) #1 surface::assign_surface_internal(SDL_Surface*) src/sdl/surface.hpp:92 (wesnoth-debug+0x407985b) #2 surface::assign(SDL_Surface*) src/sdl/surface.hpp:48 (wesnoth-debug+0x407973a) #3 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1513 (wesnoth-debug+0x41541d3) #4 gui2::canvas::set_width(unsigned int) src/gui/core/canvas.hpp:146 (wesnoth-debug+0x476d26f) #5 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:270 (wesnoth-debug+0x47606d3) #6 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #7 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #8 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #9 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #10 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #11 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #12 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #13 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #14 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #15 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #16 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #17 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #18 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #19 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #20 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #21 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #22 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #24 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #25 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #26 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #27 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #28 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #29 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #30 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #31 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #32 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #33 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #34 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #35 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #36 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #37 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #38 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #39 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #40 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #41 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #42 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b5400260740 by thread T11: #0 surface::assign_surface_internal(SDL_Surface*) src/sdl/surface.hpp:93 (wesnoth-debug+0x407988c) #1 surface::assign(SDL_Surface*) src/sdl/surface.hpp:48 (wesnoth-debug+0x407973a) #2 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1513 (wesnoth-debug+0x41541d3) #3 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:175 (wesnoth-debug+0x3a0a2e1) #4 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:395 (wesnoth-debug+0x4763f44) #5 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #6 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #12 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #18 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #19 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #20 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #21 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #22 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #23 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #24 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #25 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #26 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #27 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #28 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #29 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #30 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #31 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #32 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #33 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #34 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 576 at 0x7b5400260700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::canvas>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4772fe2) #2 std::allocator_traits<std::allocator<gui2::canvas> >::allocate(std::allocator<gui2::canvas>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4772627) #3 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x4771c06) #4 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_create_storage(unsigned long) /usr/include/c++/7/bits/stl_vector.h:187 (wesnoth-debug+0x4770870) #5 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_Vector_base(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:138 (wesnoth-debug+0x476f246) #6 std::vector<gui2::canvas, std::allocator<gui2::canvas> >::vector(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:284 (wesnoth-debug+0x476def8) #7 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:62 (wesnoth-debug+0x4757c42) #8 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #9 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #10 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #11 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #12 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #13 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/sdl/surface.cpp:22 in surface::free_surface()====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b5400260720 by main thread: #0 __gnu_cxx::__normal_iterator<std::shared_ptr<gui2::canvas::shape>*, std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > > >::__normal_iterator(std::shared_ptr<gui2::canvas::shape>* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x416584e) #1 std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > >::end() /usr/include/c++/7/bits/stl_vector.h:582 (wesnoth-debug+0x416267d) #2 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1518 (wesnoth-debug+0x41542ff) #3 gui2::canvas::set_width(unsigned int) src/gui/core/canvas.hpp:146 (wesnoth-debug+0x476d26f) #4 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:270 (wesnoth-debug+0x47606d3) #5 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #6 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #7 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #12 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #13 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #14 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #15 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #16 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #17 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #18 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #19 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #20 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #21 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #22 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #23 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #24 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #25 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #26 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #27 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #28 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #29 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #30 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #31 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #32 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #33 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #34 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #35 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #36 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #37 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #38 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #39 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #40 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #41 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b5400260720 by thread T11: #0 std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > >::_M_erase_at_end(std::shared_ptr<gui2::canvas::shape>*) /usr/include/c++/7/bits/stl_vector.h:1514 (wesnoth-debug+0x4165b83) #1 std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > >::clear() /usr/include/c++/7/bits/stl_vector.h:1248 (wesnoth-debug+0x4162aa9) #2 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1519 (wesnoth-debug+0x4154377) #3 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:175 (wesnoth-debug+0x3a0a2e1) #4 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:395 (wesnoth-debug+0x4763f44) #5 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #6 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #12 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #18 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #19 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #20 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #21 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #22 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #23 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #24 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #25 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #26 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #27 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #28 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #29 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #30 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #31 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #32 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #33 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #34 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 576 at 0x7b5400260700 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::canvas>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4772fe2) #2 std::allocator_traits<std::allocator<gui2::canvas> >::allocate(std::allocator<gui2::canvas>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4772627) #3 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x4771c06) #4 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_create_storage(unsigned long) /usr/include/c++/7/bits/stl_vector.h:187 (wesnoth-debug+0x4770870) #5 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_Vector_base(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:138 (wesnoth-debug+0x476f246) #6 std::vector<gui2::canvas, std::allocator<gui2::canvas> >::vector(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:284 (wesnoth-debug+0x476def8) #7 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:62 (wesnoth-debug+0x4757c42) #8 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #9 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #10 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #11 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #12 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #13 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<std::shared_ptr<gui2::canvas::shape>*, std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > > >::__normal_iterator(std::shared_ptr<gui2::canvas::shape>* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 4 at 0x7b64000fa208 by main thread: #0 gui2::widget::place(point const&, point const&) src/gui/widgets/widget.cpp:242 (wesnoth-debug+0x47c959f) #1 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:283 (wesnoth-debug+0x4760b11) #2 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #3 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #4 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #5 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #6 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #7 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #8 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #9 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #14 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #15 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #16 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #17 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #18 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #25 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous read of size 4 at 0x7b64000fa208 by thread T11: #0 gui2::widget::get_width() const src/gui/widgets/widget.cpp:324 (wesnoth-debug+0x47cabd0) #1 gui2::styled_widget::get_text_maximum_width() const src/gui/widgets/styled_widget.cpp:405 (wesnoth-debug+0x47645d1) #2 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:370 (wesnoth-debug+0x4762b4e) #3 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #4 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #9 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000fa000 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:242 in gui2::widget::place(point const&, point const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 4 at 0x7b64000fa20c by main thread: #0 gui2::widget::place(point const&, point const&) src/gui/widgets/widget.cpp:243 (wesnoth-debug+0x47c96df) #1 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:283 (wesnoth-debug+0x4760b11) #2 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #3 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #4 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #5 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #6 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #7 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #8 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #9 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #14 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #15 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #16 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #17 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #18 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #25 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous read of size 4 at 0x7b64000fa20c by thread T11: #0 gui2::widget::get_height() const src/gui/widgets/widget.cpp:329 (wesnoth-debug+0x47cacfc) #1 gui2::styled_widget::get_text_maximum_height() const src/gui/widgets/styled_widget.cpp:412 (wesnoth-debug+0x47647d8) #2 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:371 (wesnoth-debug+0x4762c5d) #3 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #4 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #9 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000fa000 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:243 in gui2::widget::place(point const&, point const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 1 at 0x7b64000fa238 by main thread: #0 gui2::widget::set_is_dirty(bool) src/gui/widgets/widget.cpp:465 (wesnoth-debug+0x47cdcec) #1 gui2::widget::place(point const&, point const&) src/gui/widgets/widget.cpp:257 (wesnoth-debug+0x47c97e2) #2 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:283 (wesnoth-debug+0x4760b11) #3 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #4 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #5 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #6 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #7 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #8 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #9 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #10 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #15 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #16 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #17 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #18 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #20 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #21 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #22 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #23 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #26 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b64000fa238 by thread T11: #0 gui2::widget::set_is_dirty(bool) src/gui/widgets/widget.cpp:465 (wesnoth-debug+0x47cdcec) #1 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:332 (wesnoth-debug+0x4761bc2) #2 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #8 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #14 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #15 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #16 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #17 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #18 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #19 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #20 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #21 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #22 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #23 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #24 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #25 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #26 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #27 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #28 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #29 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #30 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000fa000 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:465 in gui2::widget::set_is_dirty(bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b140015a8f0 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140015a8f0 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #6 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140015a8b0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b140015a8f8 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140015a8f8 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #7 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #8 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140015a8b0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b1000069c80 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1000069c80 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 56 at 0x7b1000069c80 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b1000069c88 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1000069c88 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 56 at 0x7b1000069c80 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b14005c8db0 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b14005c8db0 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #6 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b14005c8d70 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b14005c8db8 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b14005c8db8 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #7 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #8 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b14005c8d70 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b080021a940 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b080021a940 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b080021a940 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b080021a948 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b080021a948 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b080021a940 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b140038f2b0 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140038f2b0 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #6 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140038f270 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b140038f2b8 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140038f2b8 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #7 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #8 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140038f270 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b08005479a0 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b08005479a0 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b08005479a0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b08005479a8 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b08005479a8 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b08005479a0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b140039ee90 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140039ee90 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #6 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #7 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140039ee50 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b140039ee98 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140039ee98 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #7 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #8 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140039ee50 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b0c000e9010 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b0c000e9010 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 48 at 0x7b0c000e9010 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b0c000e9018 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:890 (wesnoth-debug+0x46bf9e2) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b0c000e9018 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 48 at 0x7b0c000e9010 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x4761ad8) #12 lua_gui2::intf_set_dialog_value(lua_State*) src/scripting/lua_gui2.cpp:582 (wesnoth-debug+0x4a94dec) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 1 at 0x7b54001d6b18 by main thread: #0 gui2::canvas::set_is_dirty(bool) src/gui/core/canvas.hpp:180 (wesnoth-debug+0x3a0a357) #1 gui2::canvas::set_width(unsigned int) src/gui/core/canvas.hpp:145 (wesnoth-debug+0x476d23e) #2 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:270 (wesnoth-debug+0x47606d3) #3 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #4 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #5 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #6 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #7 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #8 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #9 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #10 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #15 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #16 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #17 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #18 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #20 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #21 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #22 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #23 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #26 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b54001d6b18 by thread T11: #0 gui2::canvas::set_is_dirty(bool) src/gui/core/canvas.hpp:180 (wesnoth-debug+0x3a0a357) #1 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:174 (wesnoth-debug+0x3a0a2b0) #2 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:395 (wesnoth-debug+0x4763f44) #3 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #4 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #9 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 576 at 0x7b54001d6a00 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::canvas>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4772fe2) #2 std::allocator_traits<std::allocator<gui2::canvas> >::allocate(std::allocator<gui2::canvas>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4772627) #3 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x4771c06) #4 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_create_storage(unsigned long) /usr/include/c++/7/bits/stl_vector.h:187 (wesnoth-debug+0x4770870) #5 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_Vector_base(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:138 (wesnoth-debug+0x476f246) #6 std::vector<gui2::canvas, std::allocator<gui2::canvas> >::vector(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:284 (wesnoth-debug+0x476def8) #7 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:62 (wesnoth-debug+0x4757c42) #8 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #9 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #10 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #11 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #12 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #13 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/core/canvas.hpp:180 in gui2::canvas::set_is_dirty(bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b54001d6a40 by main thread: #0 surface::free_surface() src/sdl/surface.cpp:22 (wesnoth-debug+0x6a5e316) #1 surface::assign_surface_internal(SDL_Surface*) src/sdl/surface.hpp:92 (wesnoth-debug+0x407985b) #2 surface::assign(SDL_Surface*) src/sdl/surface.hpp:48 (wesnoth-debug+0x407973a) #3 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1513 (wesnoth-debug+0x41541d3) #4 gui2::canvas::set_width(unsigned int) src/gui/core/canvas.hpp:146 (wesnoth-debug+0x476d26f) #5 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:270 (wesnoth-debug+0x47606d3) #6 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #7 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #8 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #9 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #10 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #11 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #12 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #13 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #14 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #15 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #16 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #17 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #18 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #19 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #20 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #21 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #22 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #24 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #25 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #26 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #27 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #28 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #29 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #30 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #31 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #32 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #33 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #34 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #35 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #36 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #37 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #38 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #39 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #40 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #41 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #42 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b54001d6a40 by thread T11: #0 surface::assign_surface_internal(SDL_Surface*) src/sdl/surface.hpp:93 (wesnoth-debug+0x407988c) #1 surface::assign(SDL_Surface*) src/sdl/surface.hpp:48 (wesnoth-debug+0x407973a) #2 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1513 (wesnoth-debug+0x41541d3) #3 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:175 (wesnoth-debug+0x3a0a2e1) #4 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:395 (wesnoth-debug+0x4763f44) #5 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #6 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #12 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #18 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #19 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #20 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #21 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #22 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #23 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #24 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #25 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #26 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #27 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #28 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #29 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #30 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #31 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #32 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #33 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #34 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 576 at 0x7b54001d6a00 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::canvas>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4772fe2) #2 std::allocator_traits<std::allocator<gui2::canvas> >::allocate(std::allocator<gui2::canvas>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4772627) #3 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x4771c06) #4 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_create_storage(unsigned long) /usr/include/c++/7/bits/stl_vector.h:187 (wesnoth-debug+0x4770870) #5 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_Vector_base(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:138 (wesnoth-debug+0x476f246) #6 std::vector<gui2::canvas, std::allocator<gui2::canvas> >::vector(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:284 (wesnoth-debug+0x476def8) #7 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:62 (wesnoth-debug+0x4757c42) #8 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #9 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #10 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #11 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #12 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #13 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/sdl/surface.cpp:22 in surface::free_surface()====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b54001d6a20 by main thread: #0 __gnu_cxx::__normal_iterator<std::shared_ptr<gui2::canvas::shape>*, std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > > >::__normal_iterator(std::shared_ptr<gui2::canvas::shape>* const&) /usr/include/c++/7/bits/stl_iterator.h:780 (wesnoth-debug+0x416584e) #1 std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > >::end() /usr/include/c++/7/bits/stl_vector.h:582 (wesnoth-debug+0x416267d) #2 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1518 (wesnoth-debug+0x41542ff) #3 gui2::canvas::set_width(unsigned int) src/gui/core/canvas.hpp:146 (wesnoth-debug+0x476d26f) #4 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:270 (wesnoth-debug+0x47606d3) #5 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #6 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #7 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #12 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #13 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #14 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #15 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #16 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #17 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #18 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #19 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #20 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #21 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #22 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #23 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #24 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #25 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #26 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #27 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #28 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #29 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #30 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #31 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #32 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #33 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #34 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #35 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #36 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #37 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #38 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #39 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #40 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #41 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b54001d6a20 by thread T11: #0 std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > >::_M_erase_at_end(std::shared_ptr<gui2::canvas::shape>*) /usr/include/c++/7/bits/stl_vector.h:1514 (wesnoth-debug+0x4165b83) #1 std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > >::clear() /usr/include/c++/7/bits/stl_vector.h:1248 (wesnoth-debug+0x4162aa9) #2 gui2::canvas::invalidate_cache() src/gui/core/canvas.cpp:1519 (wesnoth-debug+0x4154377) #3 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:175 (wesnoth-debug+0x3a0a2e1) #4 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:395 (wesnoth-debug+0x4763f44) #5 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #6 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #12 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #18 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #19 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #20 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #21 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #22 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #23 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #24 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #25 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #26 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #27 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #28 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #29 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #30 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #31 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #32 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #33 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #34 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 576 at 0x7b54001d6a00 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<gui2::canvas>::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4772fe2) #2 std::allocator_traits<std::allocator<gui2::canvas> >::allocate(std::allocator<gui2::canvas>&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4772627) #3 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x4771c06) #4 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_M_create_storage(unsigned long) /usr/include/c++/7/bits/stl_vector.h:187 (wesnoth-debug+0x4770870) #5 std::_Vector_base<gui2::canvas, std::allocator<gui2::canvas> >::_Vector_base(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:138 (wesnoth-debug+0x476f246) #6 std::vector<gui2::canvas, std::allocator<gui2::canvas> >::vector(unsigned long, std::allocator<gui2::canvas> const&) /usr/include/c++/7/bits/stl_vector.h:284 (wesnoth-debug+0x476def8) #7 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:62 (wesnoth-debug+0x4757c42) #8 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #9 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #10 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #11 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #12 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #13 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_iterator.h:780 in __gnu_cxx::__normal_iterator<std::shared_ptr<gui2::canvas::shape>*, std::vector<std::shared_ptr<gui2::canvas::shape>, std::allocator<std::shared_ptr<gui2::canvas::shape> > > >::__normal_iterator(std::shared_ptr<gui2::canvas::shape>* const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 4 at 0x7b64000d8608 by main thread: #0 gui2::widget::place(point const&, point const&) src/gui/widgets/widget.cpp:242 (wesnoth-debug+0x47c959f) #1 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:283 (wesnoth-debug+0x4760b11) #2 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #3 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #4 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #5 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #6 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #7 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #8 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #9 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #14 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #15 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #16 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #17 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #18 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #25 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous read of size 4 at 0x7b64000d8608 by thread T11: #0 gui2::widget::get_width() const src/gui/widgets/widget.cpp:324 (wesnoth-debug+0x47cabd0) #1 gui2::styled_widget::get_text_maximum_width() const src/gui/widgets/styled_widget.cpp:405 (wesnoth-debug+0x47645d1) #2 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:370 (wesnoth-debug+0x4762b4e) #3 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #4 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #9 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000d8400 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:242 in gui2::widget::place(point const&, point const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 4 at 0x7b64000d860c by main thread: #0 gui2::widget::place(point const&, point const&) src/gui/widgets/widget.cpp:243 (wesnoth-debug+0x47c96df) #1 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:283 (wesnoth-debug+0x4760b11) #2 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #3 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #4 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #5 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #6 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #7 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #8 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #9 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #14 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #15 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #16 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #17 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #18 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #20 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #21 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #22 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #23 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #24 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #25 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #26 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #27 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #28 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #29 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #30 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #31 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #32 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #33 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #34 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #35 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #36 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #37 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #38 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous read of size 4 at 0x7b64000d860c by thread T11: #0 gui2::widget::get_height() const src/gui/widgets/widget.cpp:329 (wesnoth-debug+0x47cacfc) #1 gui2::styled_widget::get_text_maximum_height() const src/gui/widgets/styled_widget.cpp:412 (wesnoth-debug+0x47647d8) #2 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:371 (wesnoth-debug+0x4762c5d) #3 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #4 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #9 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #10 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #11 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #12 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #13 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #14 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #15 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #16 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #17 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #18 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #19 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #20 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #21 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #22 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #23 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #24 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #25 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #26 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #27 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #28 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #29 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #30 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #31 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #32 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000d8400 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:243 in gui2::widget::place(point const&, point const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 1 at 0x7b64000d8638 by main thread: #0 gui2::widget::set_is_dirty(bool) src/gui/widgets/widget.cpp:465 (wesnoth-debug+0x47cdcec) #1 gui2::widget::place(point const&, point const&) src/gui/widgets/widget.cpp:257 (wesnoth-debug+0x47c97e2) #2 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:283 (wesnoth-debug+0x4760b11) #3 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #4 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #5 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #6 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #7 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #8 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #9 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #10 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #15 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #16 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #17 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #18 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #19 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #20 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #21 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #22 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #23 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #24 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #25 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #26 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #27 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #28 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #29 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #30 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #31 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #32 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #33 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #34 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #35 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #36 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #37 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #38 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #39 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 1 at 0x7b64000d8638 by thread T11: #0 gui2::widget::set_is_dirty(bool) src/gui/widgets/widget.cpp:465 (wesnoth-debug+0x47cdcec) #1 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:343 (wesnoth-debug+0x4762083) #2 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #3 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #4 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #5 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #6 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #7 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #8 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #14 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #15 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #16 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #17 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #18 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #19 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #20 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #21 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #22 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #23 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #24 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #25 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #26 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #27 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #28 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #29 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #30 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 1040 at 0x7b64000d8400 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07af2) #2 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #3 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #4 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #5 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #6 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #7 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #8 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #9 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #10 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #11 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #12 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #13 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #14 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #15 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #16 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #17 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #18 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #19 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #20 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #21 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #22 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #23 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #24 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #25 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #26 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #27 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #28 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race src/gui/widgets/widget.cpp:465 in gui2::widget::set_is_dirty(bool)====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b1400381340 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1400381340 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #6 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #7 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b1400381300 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b1400381348 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b1400381348 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #7 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #8 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b1400381300 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b100031cf00 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b100031cf00 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 56 at 0x7b100031cf00 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b100031cf08 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762e59) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b100031cf08 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 56 at 0x7b100031cf00 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x4028974) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027671) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_string, std::allocator<wfl::variant_string>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x40256db) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, wfl::variant_string*, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021fc3) #5 std::__shared_ptr<wfl::variant_string, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401f09a) #6 std::shared_ptr<wfl::variant_string>::shared_ptr<std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b634) #7 std::shared_ptr<wfl::variant_string> std::allocate_shared<wfl::variant_string, std::allocator<wfl::variant_string>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<wfl::variant_string> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x401880e) #8 std::shared_ptr<wfl::variant_string> std::make_shared<wfl::variant_string, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (wesnoth-debug+0x4015a43) #9 wfl::variant::variant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/formula/variant.cpp:172 (wesnoth-debug+0x400943f) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4762dc9) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b140014fe00 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140014fe00 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #6 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #7 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140014fdc0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b140014fe08 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140014fe08 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #7 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #8 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140014fdc0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b08001fe520 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b08001fe520 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b08001fe520 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b08001fe528 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4763081) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b08001fe528 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b08001fe520 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:377 (wesnoth-debug+0x4762ff1) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b140014ff90 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140014ff90 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #6 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #7 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140014ff50 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b140014ff98 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140014ff98 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #7 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #8 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140014ff50 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b080054b520 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b080054b520 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b080054b520 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b080054b528 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x47632f8) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b080054b528 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 32 at 0x7b080054b520 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x402816a) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4026c33) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_int, std::allocator<wfl::variant_int>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4023a95) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, wfl::variant_int*, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021597) #5 std::__shared_ptr<wfl::variant_int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401e86a) #6 std::shared_ptr<wfl::variant_int>::shared_ptr<std::allocator<wfl::variant_int>, int&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b274) #7 std::shared_ptr<wfl::variant_int> std::allocate_shared<wfl::variant_int, std::allocator<wfl::variant_int>, int&>(std::allocator<wfl::variant_int> const&, int&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4017fd4) #8 std::shared_ptr<wfl::variant_int> std::make_shared<wfl::variant_int, int&>(int&) /usr/include/c++/7/bits/shared_ptr.h:707 (wesnoth-debug+0x40152cb) #9 wfl::variant::variant(int) src/formula/variant.cpp:148 (wesnoth-debug+0x4008f55) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:378 (wesnoth-debug+0x4763268) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add====================================WARNING: ThreadSanitizer: data race (pid=17519) Write of size 8 at 0x7b140014fc70 by main thread: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #6 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #7 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #8 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #9 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #10 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #11 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #12 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #13 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #14 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #19 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #20 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #21 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #22 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #23 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #25 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #26 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #27 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #28 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #29 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #30 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #31 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #32 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #33 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #34 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #35 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #36 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #37 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #38 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #39 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #40 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #41 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #42 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #43 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140014fc70 by thread T11: #0 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x4014789) #1 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #2 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #3 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #4 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #5 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #6 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #7 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #8 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #9 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #10 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #11 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #12 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #13 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #14 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #15 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #16 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #17 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #18 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #19 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #20 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #21 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #22 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #23 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #24 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #25 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #26 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #27 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #28 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #29 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #30 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #31 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #32 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #33 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #34 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #35 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140014fc30 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/home/shadowm/src/wesnoth-1.14/wesnoth-debug+0x4014789) in std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b140014fc78 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:698 (wesnoth-debug+0x3ab6281) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b140014fc78 by thread T11: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:704 (wesnoth-debug+0x3ab650d) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #7 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #8 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #9 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #10 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #11 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #12 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #13 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #14 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #15 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #16 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #17 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #18 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #19 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #20 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #21 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #22 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #23 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #24 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #25 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #26 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #27 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #28 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #29 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #30 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #31 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #32 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #33 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #34 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #35 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #36 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 80 at 0x7b140014fc30 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39e16a2) #2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39e0178) #3 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x39ddd03) #4 std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x39db0d1) #5 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) /usr/include/c++/7/bits/stl_tree.h:2398 (wesnoth-debug+0x39d92e1) #6 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wfl::variant, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, wfl::variant> > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_map.h:493 (wesnoth-debug+0x39d6906) #7 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a0e4) #8 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #9 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #10 gui2::styled_widget::styled_widget(gui2::implementation::builder_styled_widget const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/gui/widgets/styled_widget.cpp:75 (wesnoth-debug+0x4758443) #11 gui2::label::label(gui2::implementation::builder_label const&) src/gui/widgets/label.cpp:51 (wesnoth-debug+0x3a02b19) #12 gui2::implementation::builder_label::build() const src/gui/widgets/label.cpp:319 (wesnoth-debug+0x3a07b4b) #13 gui2::builder_grid::build(gui2::grid*) const src/gui/core/window_builder.cpp:475 (wesnoth-debug+0x4237e9b) #14 gui2::builder_grid::build() const src/gui/core/window_builder.cpp:443 (wesnoth-debug+0x42367ae) #15 gui2::window::finalize(std::shared_ptr<gui2::builder_grid> const&) src/gui/widgets/window.cpp:1191 (wesnoth-debug+0x3c53886) #16 gui2::build(gui2::builder_window::window_resolution const*) src/gui/core/window_builder.cpp:73 (wesnoth-debug+0x422f89b) #17 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:248 (wesnoth-debug+0x4a8f770) #18 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #19 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #20 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #21 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #22 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #23 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #24 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #25 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #26 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #27 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #28 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #29 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #30 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #31 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #32 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #33 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #34 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #35 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #36 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #37 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #38 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #39 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:698 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Read of size 8 at 0x7b0c0010b1e0 by main thread: #0 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab644a) #1 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #2 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #3 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #4 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #5 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #7 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #8 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #9 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #10 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #11 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #12 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #13 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #14 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #15 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #16 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #17 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #18 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #19 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #20 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #21 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #22 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #23 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #24 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #25 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #26 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #27 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #28 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #29 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #30 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #31 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #32 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #33 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #34 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #35 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #36 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #37 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #38 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #39 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #40 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #41 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #42 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #43 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #44 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b0c0010b1e0 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 48 at 0x7b0c0010b1e0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:703 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&)====================================WARNING: ThreadSanitizer: data race (pid=17519) Atomic write of size 4 at 0x7b0c0010b1e8 by main thread: #0 __tsan_atomic32_fetch_add <null> (libtsan.so.0+0x631e5) #1 __exchange_and_add /usr/include/c++/7/ext/atomicity.h:49 (wesnoth-debug+0x3929efa) #2 __exchange_and_add_dispatch /usr/include/c++/7/ext/atomicity.h:82 (wesnoth-debug+0x392a12a) #3 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:151 (wesnoth-debug+0x394977f) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/7/bits/shared_ptr_base.h:703 (wesnoth-debug+0x3ab64dc) #5 std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<wfl::variant_value_base, (__gnu_cxx::_Lock_policy)2> const&) <null> (wesnoth-debug+0x40147ef) #6 std::shared_ptr<wfl::variant_value_base>::operator=(std::shared_ptr<wfl::variant_value_base> const&) <null> (wesnoth-debug+0x40148a1) #7 wfl::variant::operator=(wfl::variant const&) src/formula/variant.cpp:185 (wesnoth-debug+0x400969b) #8 wfl::map_formula_callable::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/formula/callable.hpp:254 (wesnoth-debug+0x3a0a118) #9 gui2::canvas::set_variable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, wfl::variant const&) src/gui/core/canvas.hpp:173 (wesnoth-debug+0x3a0a27a) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763692) #11 gui2::styled_widget::place(point const&, point const&) src/gui/widgets/styled_widget.cpp:286 (wesnoth-debug+0x4760c6e) #12 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #13 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #14 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #15 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #16 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #17 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #18 gui2::scrollbar_container::set_content_size(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:819 (wesnoth-debug+0x47236c7) #19 gui2::scrollbar_container::place(point const&, point const&) src/gui/widgets/scrollbar_container.cpp:406 (wesnoth-debug+0x4712105) #20 gui2::grid::child::place(point, point) src/gui/widgets/grid.cpp:798 (wesnoth-debug+0x46bb55c) #21 gui2::grid::layout(point const&) src/gui/widgets/grid.cpp:983 (wesnoth-debug+0x46c1ebf) #22 gui2::grid::place(point const&, point const&) src/gui/widgets/grid.cpp:505 (wesnoth-debug+0x46b20aa) #23 gui2::container_base::place(point const&, point const&) src/gui/widgets/container_base.cpp:140 (wesnoth-debug+0x438fc1a) #24 gui2::window::layout() src/gui/widgets/window.cpp:1071 (wesnoth-debug+0x3c50631) #25 gui2::window::draw() src/gui/widgets/window.cpp:630 (wesnoth-debug+0x3c47c75) #26 void std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x3c9188b) #27 std::__invoke_result<void (gui2::window::*&)(), gui2::window*&>::type std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) <null> (wesnoth-debug+0x3c8b9bc) #28 void std::_Bind<void (gui2::window::*(gui2::window*))()>::__call<void, gui2::widget&, gui2::event::ui_event&&, bool&, bool&, 0ul>(std::tuple<gui2::widget&, gui2::event::ui_event&&, bool&, bool&>&&, std::_Index_tuple<0ul>) <null> (wesnoth-debug+0x3c862b9) #29 void std::_Bind<void (gui2::window::*(gui2::window*))()>::operator()<gui2::widget&, gui2::event::ui_event, bool&, bool&, void>(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x3c7b169) #30 std::_Function_handler<void (gui2::widget&, gui2::event::ui_event, bool&, bool&), std::_Bind<void (gui2::window::*(gui2::window*))()> >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3c6fa42) #31 std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x419b92f) #32 bool gui2::event::implementation::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, std::vector<std::pair<gui2::widget*, gui2::event::ui_event>, std::allocator<std::pair<gui2::widget*, gui2::event::ui_event> > >&, gui2::widget*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:433 (wesnoth-debug+0x418d093) #33 bool gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) src/gui/core/event/dispatcher_private.hpp:505 (wesnoth-debug+0x4188975) #34 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) src/gui/core/event/dispatcher.cpp:137 (wesnoth-debug+0x418260d) #35 gui2::event::sdl_event_handler::draw() src/gui/core/event/handler.cpp:537 (wesnoth-debug+0x420fc86) #36 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:385 (wesnoth-debug+0x420d40f) #37 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b7ec5) #38 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c45f56) #39 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a2669) #40 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #41 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #42 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #43 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #44 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #45 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #46 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #47 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #48 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) Previous write of size 8 at 0x7b0c0010b1e8 by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Location is heap block of size 48 at 0x7b0c0010b1e0 allocated by thread T11: #0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a) #1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x40286fb) #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x4027323) #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<wfl::variant_list, std::allocator<wfl::variant_list>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/7/bits/allocated_ptr.h:104 (wesnoth-debug+0x4024eb3) #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, wfl::variant_list*, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:635 (wesnoth-debug+0x4021d23) #5 std::__shared_ptr<wfl::variant_list, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr_base.h:1295 (wesnoth-debug+0x401ee8e) #6 std::shared_ptr<wfl::variant_list>::shared_ptr<std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::_Sp_make_shared_tag, std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:344 (wesnoth-debug+0x401b53e) #7 std::shared_ptr<wfl::variant_list> std::allocate_shared<wfl::variant_list, std::allocator<wfl::variant_list>, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::allocator<wfl::variant_list> const&, std::vector<wfl::variant, std::allocator<wfl::variant> > const&) /usr/include/c++/7/bits/shared_ptr.h:691 (wesnoth-debug+0x4018582) #8 std::shared_ptr<wfl::variant_list> std::make_shared<wfl::variant_list, std::vector<wfl::variant, std::allocator<wfl::variant> > const&>(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) <null> (wesnoth-debug+0x4015842) #9 wfl::variant::variant(std::vector<wfl::variant, std::allocator<wfl::variant> > const&) src/formula/variant.cpp:166 (wesnoth-debug+0x40092ea) #10 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:389 (wesnoth-debug+0x4763602) #11 gui2::styled_widget::set_use_markup(bool) src/gui/widgets/styled_widget.cpp:342 (wesnoth-debug+0x4761f99) #12 lua_gui2::intf_set_dialog_markup(lua_State*) src/scripting/lua_gui2.cpp:823 (wesnoth-debug+0x4a98090) #13 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #14 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #15 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #16 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #17 lua_callk(lua_State*, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:924 (wesnoth-debug+0x619e482) #18 lua_gui2::show_dialog(lua_State*) src/scripting/lua_gui2.cpp:252 (wesnoth-debug+0x4a8f7e1) #19 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b485e) #20 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x62035cd) #21 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b55e5) #22 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b574a) #23 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619e6ba) #24 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b149e) #25 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b745f) #26 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x619e8e9) #27 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a812d6) #28 lua_kernel_base::protected_call(lua_State*, int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:643 (wesnoth-debug+0x4ab1304) #29 lua_kernel_base::protected_call(int, int, std::function<void (char const*, char const*)>) src/scripting/lua_kernel_base.cpp:638 (wesnoth-debug+0x4ab128b) #30 lua_kernel_base::throwing_run(char const*, int) src/scripting/lua_kernel_base.cpp:721 (wesnoth-debug+0x4ab23fd) #31 lua_kernel_base::run(char const*, int) src/scripting/lua_kernel_base.cpp:728 (wesnoth-debug+0x4ab259b) #32 lua_kernel_base::run_lua_tag(config const&) src/scripting/lua_kernel_base.cpp:711 (wesnoth-debug+0x4ab1e1d) #33 game_lua_kernel::initialize(config const&) src/scripting/game_lua_kernel.cpp:4327 (wesnoth-debug+0x4a2a9f1) #34 game_state::init(config const&, play_controller&) src/game_state.cpp:210 (wesnoth-debug+0x410fa9a) #35 operator() src/play_controller.cpp:219 (wesnoth-debug+0x48fcb3b) #36 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x49285be) #37 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a376b) #38 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x42739cf) #39 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279089) #40 <null> <null> (libboost_thread.so.1.62.0+0x11f95) Thread T11 (tid=17965, running) created by main thread at: #0 pthread_create <null> (libtsan.so.0+0x2b6db) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.62.0+0x112f8) #2 thread<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> > /usr/include/boost/thread/detail/thread.hpp:265 (wesnoth-debug+0x42771d7) #3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x4273cf3) #4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a22fc) #5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42765fa) #6 play_controller::init(config const&) src/play_controller.cpp:204 (wesnoth-debug+0x490198b) #7 play_controller::play_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/play_controller.cpp:181 (wesnoth-debug+0x48fa12c) #8 playsingle_controller::playsingle_controller(config const&, saved_game&, config const&, std::shared_ptr<terrain_type_data> const&, bool) src/playsingle_controller.cpp:79 (wesnoth-debug+0x5a5acfa) #9 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:189 (wesnoth-debug+0x56757e8) #10 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x56773de) #11 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f5765) #12 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4201) #13 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca4f65) SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x631e5) in __tsan_atomic32_fetch_add==================
Comments