==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x7b140059c0b8 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+0x422bfc7)
#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+0x422bd0b)
#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+0x422b736)
#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+0x422a30f)
#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+0x422b57b)
#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+0x422a199)
#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+0x42295b1)
#8 gui2::remove_timer(unsigned long) src/gui/core/timer.cpp:170 (wesnoth-debug+0x42285f6)
#9 gui2::text_box_base::toggle_cursor_timer(bool) src/gui/widgets/text_box_base.cpp:288 (wesnoth-debug+0x477bf90)
#10 gui2::text_box_base::~text_box_base() src/gui/widgets/text_box_base.cpp:69 (wesnoth-debug+0x4776b22)
#11 gui2::text_box::~text_box() src/gui/widgets/text_box.hpp:121 (wesnoth-debug+0x3af5a4a)
#12 gui2::text_box::~text_box() src/gui/widgets/text_box.hpp:121 (wesnoth-debug+0x3af5aa9)
#13 std::default_delete<gui2::widget>::operator()(gui2::widget*) const /usr/include/c++/7/bits/unique_ptr.h:78 (wesnoth-debug+0x3c6e6db)
#14 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::~unique_ptr() /usr/include/c++/7/bits/unique_ptr.h:268 (wesnoth-debug+0x3c638ed)
#15 gui2::grid::child::~child() <null> (wesnoth-debug+0x46d05f0)
#16 void std::_Destroy<gui2::grid::child>(gui2::grid::child*) <null> (wesnoth-debug+0x46d0669)
#17 void std::_Destroy_aux<false>::__destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46cf869)
#18 void std::_Destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46ce282)
#19 void std::_Destroy<gui2::grid::child*, gui2::grid::child>(gui2::grid::child*, gui2::grid::child*, std::allocator<gui2::grid::child>&) <null> (wesnoth-debug+0x46cad63)
#20 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::~vector() /usr/include/c++/7/bits/stl_vector.h:434 (wesnoth-debug+0x46c70f2)
#21 gui2::grid::~grid() src/gui/widgets/grid.cpp:54 (wesnoth-debug+0x46a63ac)
#22 gui2::grid::~grid() src/gui/widgets/grid.cpp:56 (wesnoth-debug+0x46a65c5)
#23 std::default_delete<gui2::widget>::operator()(gui2::widget*) const /usr/include/c++/7/bits/unique_ptr.h:78 (wesnoth-debug+0x3c6e6db)
#24 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::~unique_ptr() /usr/include/c++/7/bits/unique_ptr.h:268 (wesnoth-debug+0x3c638ed)
#25 gui2::grid::child::~child() <null> (wesnoth-debug+0x46d05f0)
#26 void std::_Destroy<gui2::grid::child>(gui2::grid::child*) <null> (wesnoth-debug+0x46d0669)
#27 void std::_Destroy_aux<false>::__destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46cf869)
#28 void std::_Destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46ce282)
#29 void std::_Destroy<gui2::grid::child*, gui2::grid::child>(gui2::grid::child*, gui2::grid::child*, std::allocator<gui2::grid::child>&) <null> (wesnoth-debug+0x46cad63)
#30 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::~vector() /usr/include/c++/7/bits/stl_vector.h:434 (wesnoth-debug+0x46c70f2)
#31 gui2::grid::~grid() src/gui/widgets/grid.cpp:54 (wesnoth-debug+0x46a63ac)
#32 gui2::grid::~grid() src/gui/widgets/grid.cpp:56 (wesnoth-debug+0x46a65c5)
#33 std::default_delete<gui2::widget>::operator()(gui2::widget*) const /usr/include/c++/7/bits/unique_ptr.h:78 (wesnoth-debug+0x3c6e6db)
#34 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::~unique_ptr() /usr/include/c++/7/bits/unique_ptr.h:268 (wesnoth-debug+0x3c638ed)
#35 gui2::grid::child::~child() <null> (wesnoth-debug+0x46d05f0)
#36 void std::_Destroy<gui2::grid::child>(gui2::grid::child*) <null> (wesnoth-debug+0x46d0669)
#37 void std::_Destroy_aux<false>::__destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46cf869)
#38 void std::_Destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46ce282)
#39 void std::_Destroy<gui2::grid::child*, gui2::grid::child>(gui2::grid::child*, gui2::grid::child*, std::allocator<gui2::grid::child>&) <null> (wesnoth-debug+0x46cad63)
#40 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::~vector() /usr/include/c++/7/bits/stl_vector.h:434 (wesnoth-debug+0x46c70f2)
#41 gui2::grid::~grid() src/gui/widgets/grid.cpp:54 (wesnoth-debug+0x46a63ac)
#42 gui2::grid::~grid() src/gui/widgets/grid.cpp:56 (wesnoth-debug+0x46a65c5)
#43 std::default_delete<gui2::widget>::operator()(gui2::widget*) const /usr/include/c++/7/bits/unique_ptr.h:78 (wesnoth-debug+0x3c6e6db)
#44 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::~unique_ptr() /usr/include/c++/7/bits/unique_ptr.h:268 (wesnoth-debug+0x3c638ed)
#45 gui2::grid::child::~child() <null> (wesnoth-debug+0x46d05f0)
#46 void std::_Destroy<gui2::grid::child>(gui2::grid::child*) <null> (wesnoth-debug+0x46d0669)
#47 void std::_Destroy_aux<false>::__destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46cf869)
#48 void std::_Destroy<gui2::grid::child*>(gui2::grid::child*, gui2::grid::child*) <null> (wesnoth-debug+0x46ce282)
#49 void std::_Destroy<gui2::grid::child*, gui2::grid::child>(gui2::grid::child*, gui2::grid::child*, std::allocator<gui2::grid::child>&) <null> (wesnoth-debug+0x46cad63)
#50 std::vector<gui2::grid::child, std::allocator<gui2::grid::child> >::~vector() /usr/include/c++/7/bits/stl_vector.h:434 (wesnoth-debug+0x46c70f2)
#51 gui2::grid::~grid() src/gui/widgets/grid.cpp:54 (wesnoth-debug+0x46a63ac)
#52 gui2::container_base::~container_base() <null> (wesnoth-debug+0x393ff09)
#53 gui2::panel::~panel() src/gui/widgets/panel.hpp:37 (wesnoth-debug+0x3aefe3c)
#54 gui2::panel::~panel() src/gui/widgets/panel.hpp:37 (wesnoth-debug+0x3aefe9b)
#55 std::default_delete<gui2::widget>::operator()(gui2::widget*) const /usr/include/c++/7/bits/unique_ptr.h:78 (wesnoth-debug+0x3c6e6db)
#56 std::unique_ptr<gui2::widget, std::default_delete<gui2::widget> >::reset(gui2::widget*) /usr/include/c++/7/bits/unique_ptr.h:376 (wesnoth-debug+0x46c674c)
#57 gui2::grid::child::set_widget(gui2::widget*) src/gui/widgets/grid.hpp:412 (wesnoth-debug+0x46c5db9)
#58 gui2::grid::remove_child(unsigned int, unsigned int) src/gui/widgets/grid.cpp:145 (wesnoth-debug+0x46a81c6)
#59 gui2::window::~window() src/gui/widgets/window.cpp:403 (wesnoth-debug+0x3c44332)
#60 gui2::window::~window() src/gui/widgets/window.cpp:425 (wesnoth-debug+0x3c44a41)
#61 std::default_delete<gui2::window>::operator()(gui2::window*) const /usr/include/c++/7/bits/unique_ptr.h:78 (wesnoth-debug+0x42b044d)
#62 std::unique_ptr<gui2::window, std::default_delete<gui2::window> >::reset(gui2::window*) /usr/include/c++/7/bits/unique_ptr.h:376 (wesnoth-debug+0x42ad478)
#63 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:114 (wesnoth-debug+0x42a3b2a)
#64 gui2::dialogs::show_wml_message(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&, gui2::dialogs::wml_message_portrait const*, gui2::dialogs::wml_message_portrait const*, gui2::dialogs::wml_message_options const&, gui2::dialogs::wml_message_input const&) src/gui/dialogs/wml_message.cpp:188 (wesnoth-debug+0x59714ef)
#65 lua_gui2::show_message_dialog(lua_State*) src/scripting/lua_gui2.cpp:353 (wesnoth-debug+0x4a91bf3)
#66 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b6186)
#67 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x6204ef5)
#68 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b6f0d)
#69 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b7072)
#70 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619ffe2)
#71 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b2dc6)
#72 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b8d87)
#73 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x61a0211)
#74 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a81ea4)
#75 luaW_pcall(lua_State*, int, int, bool) src/scripting/lua_common.cpp:972 (wesnoth-debug+0x4a81f4b)
#76 game_lua_kernel::run_wml_action(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, vconfig const&, game_events::queued_event const&) src/scripting/game_lua_kernel.cpp:4583 (wesnoth-debug+0x4a2d85c)
#77 game_events::event_handler::handle_event(game_events::queued_event const&, game_lua_kernel&) src/game_events/handlers.cpp:73 (wesnoth-debug+0x5ead091)
#78 game_events::wml_event_pump::process_event(std::shared_ptr<game_events::event_handler>&, game_events::queued_event const&) src/game_events/pump.cpp:304 (wesnoth-debug+0x5631e3e)
#79 operator() src/game_events/pump.cpp:596 (wesnoth-debug+0x5636061)
#80 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x56385f8)
#81 std::function<void (game_events::manager&, std::shared_ptr<game_events::event_handler>&)>::operator()(game_events::manager&, std::shared_ptr<game_events::event_handler>&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x5615715)
#82 game_events::manager::execute_on_events(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (game_events::manager&, std::shared_ptr<game_events::event_handler>&)>) src/game_events/manager.cpp:210 (wesnoth-debug+0x5613081)
#83 game_events::wml_event_pump::operator()() src/game_events/pump.cpp:592 (wesnoth-debug+0x563779d)
#84 game_events::wml_event_pump::fire(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, game_events::entity_location const&, game_events::entity_location const&, config const&) src/game_events/pump.cpp:495 (wesnoth-debug+0x56359cb)
#85 play_controller::fire_start() src/play_controller.cpp:368 (wesnoth-debug+0x49064d2)
#86 play_controller::start_game() src/play_controller.cpp:1093 (wesnoth-debug+0x491f9ad)
#87 playsingle_controller::play_scenario_init() src/playsingle_controller.cpp:149 (wesnoth-debug+0x5a5ef04)
#88 playsingle_controller::play_scenario(config const&) src/playsingle_controller.cpp:258 (wesnoth-debug+0x5a61adb)
#89 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:194 (wesnoth-debug+0x56774aa)
#90 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x5678a70)
#91 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f6333)
#92 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4dcf)
#93 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Previous read of size 4 at 0x7b140059c0bc by thread T1:
#0 timer_callback src/gui/core/timer.cpp:106 (wesnoth-debug+0x4227a37)
#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+0x42a3237)
#3 gui2::dialogs::show_wml_message(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&, gui2::dialogs::wml_message_portrait const*, gui2::dialogs::wml_message_portrait const*, gui2::dialogs::wml_message_options const&, gui2::dialogs::wml_message_input const&) src/gui/dialogs/wml_message.cpp:188 (wesnoth-debug+0x59714ef)
#4 lua_gui2::show_message_dialog(lua_State*) src/scripting/lua_gui2.cpp:353 (wesnoth-debug+0x4a91bf3)
#5 luaD_precall(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:434 (wesnoth-debug+0x61b6186)
#6 luaV_execute(lua_State*) src/lua/lvm.cpp:1134 (wesnoth-debug+0x6204ef5)
#7 luaD_call(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:499 (wesnoth-debug+0x61b6f0d)
#8 luaD_callnoyield(lua_State*, lua_TValue*, int) src/lua/ldo.cpp:509 (wesnoth-debug+0x61b7072)
#9 f_call src/lua/lapi.cpp:942 (wesnoth-debug+0x619ffe2)
#10 luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*) src/lua/ldo.cpp:142 (wesnoth-debug+0x61b2dc6)
#11 luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, long, long) src/lua/ldo.cpp:729 (wesnoth-debug+0x61b8d87)
#12 lua_pcallk(lua_State*, int, int, int, long, int (*)(lua_State*, int, long)) src/lua/lapi.cpp:968 (wesnoth-debug+0x61a0211)
#13 luaW_pcall_internal(lua_State*, int, int) src/scripting/lua_common.cpp:956 (wesnoth-debug+0x4a81ea4)
#14 luaW_pcall(lua_State*, int, int, bool) src/scripting/lua_common.cpp:972 (wesnoth-debug+0x4a81f4b)
#15 game_lua_kernel::run_wml_action(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, vconfig const&, game_events::queued_event const&) src/scripting/game_lua_kernel.cpp:4583 (wesnoth-debug+0x4a2d85c)
#16 game_events::event_handler::handle_event(game_events::queued_event const&, game_lua_kernel&) src/game_events/handlers.cpp:73 (wesnoth-debug+0x5ead091)
#17 game_events::wml_event_pump::process_event(std::shared_ptr<game_events::event_handler>&, game_events::queued_event const&) src/game_events/pump.cpp:304 (wesnoth-debug+0x5631e3e)
#18 operator() src/game_events/pump.cpp:596 (wesnoth-debug+0x5636061)
#19 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x56385f8)
#20 std::function<void (game_events::manager&, std::shared_ptr<game_events::event_handler>&)>::operator()(game_events::manager&, std::shared_ptr<game_events::event_handler>&) const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x5615715)
#21 game_events::manager::execute_on_events(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (game_events::manager&, std::shared_ptr<game_events::event_handler>&)>) src/game_events/manager.cpp:210 (wesnoth-debug+0x5613081)
#22 game_events::wml_event_pump::operator()() src/game_events/pump.cpp:592 (wesnoth-debug+0x563779d)
#23 game_events::wml_event_pump::fire(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, game_events::entity_location const&, game_events::entity_location const&, config const&) src/game_events/pump.cpp:495 (wesnoth-debug+0x56359cb)
#24 play_controller::fire_start() src/play_controller.cpp:368 (wesnoth-debug+0x49064d2)
#25 play_controller::start_game() src/play_controller.cpp:1093 (wesnoth-debug+0x491f9ad)
#26 playsingle_controller::play_scenario_init() src/playsingle_controller.cpp:149 (wesnoth-debug+0x5a5ef04)
#27 playsingle_controller::play_scenario(config const&) src/playsingle_controller.cpp:258 (wesnoth-debug+0x5a61adb)
#28 campaign_controller::playsingle_scenario(end_level_data&) src/game_initialization/playcampaign.cpp:194 (wesnoth-debug+0x56774aa)
#29 campaign_controller::play_game() src/game_initialization/playcampaign.cpp:281 (wesnoth-debug+0x5678a70)
#30 game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) src/game_launcher.cpp:983 (wesnoth-debug+0x40f6333)
#31 do_gameloop src/wesnoth.cpp:897 (wesnoth-debug+0x3ca4dcf)
#32 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Thread T1 'SDLTimer' (tid=29310, 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*)
==================
20180527 00:56:42 info wml: Skipping [message] because user not interested
20180527 00:56:42 info wml: Skipping [message] because user not interested
20180527 00:56:42 info wml: Skipping [message] because user not interested
20180527 00:56:42 info wml: Skipping [message] because user not interested
20180527 00:56:42 info wml: Skipping [message] because user not interested
20180527 00:56:42 info wml: Skipping [message] because user not interested
Comments