00:50:09 shadowm@hanacore ~/src/wesnoth-1.14 git:1.14 % ./wesnoth-debug --log-info=wml
Battle for Wesnoth v1.14.2+dev (78ba4582a1-Modified)
Started on Sun May 27 00:50:09 2018
Automatically found a possible data directory at /home/USER/src/wesnoth-1.14
Data directory: /home/USER/src/wesnoth-1.14
User configuration directory: /home/USER/.wesnoth-1.14
User data directory: /home/USER/.wesnoth-1.14
Cache directory: /home/USER/.wesnoth-1.14/cache
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x7b2800000978 by main thread:
#0 recvmsg <null> (libtsan.so.0+0x39058)
#1 pa_iochannel_read_with_ancil_data <null> (libpulsecommon-11.1.so+0x32aad)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Previous write of size 8 at 0x7b2800000978 by thread T2:
#0 memcpy <null> (libtsan.so.0+0x31065)
#1 pa_srbchannel_read <null> (libpulsecommon-11.1.so+0x46e5e)
Location is heap block of size 152 at 0x7b2800000960 allocated by main thread:
#0 malloc <null> (libtsan.so.0+0x2aa63)
#1 pa_xmalloc <null> (libpulse.so.0+0x39536)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Thread T2 'PulseHotplug' (tid=29350, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x2b6db)
#1 <null> <null> (libSDL2-2.0.so.0+0xd8e36)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x39058) in __interceptor_recvmsg
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 1 at 0x7b2800000986 by main thread:
#0 recvmsg <null> (libtsan.so.0+0x39058)
#1 pa_iochannel_read_with_ancil_data <null> (libpulsecommon-11.1.so+0x32aad)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Previous read of size 1 at 0x7b2800000986 by thread T2:
#0 memcpy <null> (libtsan.so.0+0x31065)
#1 <null> <null> (libpulsecommon-11.1.so+0x454c8)
Location is heap block of size 152 at 0x7b2800000960 allocated by main thread:
#0 malloc <null> (libtsan.so.0+0x2aa63)
#1 pa_xmalloc <null> (libpulse.so.0+0x39536)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Thread T2 'PulseHotplug' (tid=29350, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x2b6db)
#1 <null> <null> (libSDL2-2.0.so.0+0xd8e36)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x39058) in __interceptor_recvmsg
==================
Setting mode to 1920x1051
src/gui/widgets/window.cpp:275:108: runtime error: member call on address 0x7b740000f000 which does not point to an object of type 'window'
0x7b740000f000: note: object has invalid vptr
00 00 00 00 00 00 00 00 00 00 00 00 65 6d 61 70 5f 77 69 64 00 00 00 00 00 00 00 00 20 2b 20 28
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
src/gui/widgets/spacer.cpp:32:44: runtime error: member call on address 0x7b6400024900 which does not point to an object of type 'spacer'
0x7b6400024900: note: object has invalid vptr
00 00 00 00 00 00 00 00 00 00 00 00 6d 61 67 65 5f 6f 72 69 00 00 00 00 00 00 00 00 64 74 68 20
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
src/gui/widgets/image.cpp:40:44: runtime error: member call on address 0x7b6000006400 which does not point to an object of type 'image'
0x7b6000006400: note: object has invalid vptr
00 00 00 00 00 00 00 00 00 00 00 00 32 35 30 2c 20 6d 69 6e 00 00 00 00 00 00 00 00 73 74 5f 73
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
src/gui/widgets/label.cpp:44:44: runtime error: member call on address 0x7b6400024400 which does not point to an object of type 'label'
0x7b6400024400: note: object has invalid vptr
00 00 00 00 00 00 00 00 00 00 00 00 6d 61 67 65 5f 6f 72 69 00 00 00 00 00 00 00 00 64 74 68 20
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Read of size 8 at 0x556f740627a8 by thread T4:
#0 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, config_attribute_value>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, config_attribute_value> >, 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, config_attribute_value> > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, config_attribute_value> >*) /usr/include/c++/7/bits/stl_tree.h:2306 (wesnoth-debug+0x6241e7f)
#1 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, config_attribute_value> > 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, config_attribute_value>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, config_attribute_value> >, 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, config_attribute_value> > >::_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, config_attribute_value> >, 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:2405 (wesnoth-debug+0x6239ee7)
#2 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, config_attribute_value> > std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, config_attribute_value, 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, config_attribute_value> > >::emplace_hint<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, config_attribute_value> >, 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_map.h:601 (wesnoth-debug+0x6237fa7)
#3 config::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/config.cpp:708 (wesnoth-debug+0x6223ce4)
#4 preferences::get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) src/preferences/general.cpp:229 (wesnoth-debug+0x681b335)
#5 preferences::core_id[abi:cxx11]() src/preferences/general.cpp:314 (wesnoth-debug+0x681c26f)
#6 game_config_manager::load_game_config(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:231 (wesnoth-debug+0x404b66e)
#7 operator() src/game_config_manager.cpp:139 (wesnoth-debug+0x4049200)
#8 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x4052dbe)
#9 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#10 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:221 (wesnoth-debug+0x427709a)
#11 game_config_manager::load_game_config_with_loadscreen(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:138 (wesnoth-debug+0x40495bc)
#12 game_config_manager::init_game_config(game_config_manager::FORCE_RELOAD_CONFIG) src/game_config_manager.cpp:89 (wesnoth-debug+0x4048ab5)
#13 operator() src/wesnoth.cpp:707 (wesnoth-debug+0x3ca2ad4)
#14 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3caac6c)
#15 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#16 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x427459d)
#17 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279c57)
#18 <null> <null> (libboost_thread.so.1.62.0+0x11f95)
Previous write of size 8 at 0x556f740627a8 by main thread:
[failed to restore the stack]
Location is global '(anonymous namespace)::prefs' of size 120 at 0x556f74062780 (wesnoth-debug+0x00000c31b7a8)
Thread T4 (tid=29354, 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+0x4277da5)
#3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x42748c1)
#4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#6 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#7 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/stl_tree.h:2306 in 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, config_attribute_value>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, config_attribute_value> >, 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, config_attribute_value> > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, config_attribute_value> >*)
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Read of size 8 at 0x7b14000a7050 by thread T1:
#0 std::less<unsigned long>::operator()(unsigned long const&, unsigned long const&) const /usr/include/c++/7/bits/stl_function.h:386 (wesnoth-debug+0x422a4ff)
#1 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_lower_bound(std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >*, std::_Rb_tree_node_base*, unsigned long const&) /usr/include/c++/7/bits/stl_tree.h:1872 (wesnoth-debug+0x422a390)
#2 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> > >::find(unsigned long const&) <null> (wesnoth-debug+0x4229807)
#3 std::map<unsigned long, gui2::timer, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::find(unsigned long const&) <null> (wesnoth-debug+0x422905e)
#4 timer_callback src/gui/core/timer.cpp:92 (wesnoth-debug+0x4227917)
#5 <null> <null> (libSDL2-2.0.so.0+0x67fc8)
Previous write of size 8 at 0x7b14000a7050 by main thread:
[failed to restore the stack]
Location is heap block of size 80 at 0x7b14000a7030 allocated by main thread:
#0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a)
#1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x422c09a)
#2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x422bdc5)
#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_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x422b893)
#4 std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >* 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_create_node<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x422a895)
#5 std::pair<std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >, bool> 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_emplace_unique<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) <null> (wesnoth-debug+0x4229e9a)
#6 std::pair<std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >, bool> std::map<unsigned long, gui2::timer, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::emplace<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) <null> (wesnoth-debug+0x422952d)
#7 gui2::add_timer(unsigned int, std::function<void (unsigned long)> const&, bool) src/gui/core/timer.cpp:137 (wesnoth-debug+0x4227edd)
#8 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:126 (wesnoth-debug+0x4274af3)
#9 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#10 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#11 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#12 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/include/c++/7/bits/stl_function.h:386 in std::less<unsigned long>::operator()(unsigned long const&, unsigned long const&) const
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x7b10000159f0 by thread T4:
#0 operator delete(void*) <null> (libtsan.so.0+0x6f3d1)
#1 __gnu_cxx::new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::deallocate(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, unsigned long) /usr/include/c++/7/ext/new_allocator.h:125 (wesnoth-debug+0x39bf035)
#2 std::allocator_traits<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::deallocate(std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:462 (wesnoth-debug+0x39ba140)
#3 std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_deallocate(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, unsigned long) /usr/include/c++/7/bits/stl_vector.h:180 (wesnoth-debug+0x39b0a5c)
#4 void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<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&) /usr/include/c++/7/bits/vector.tcc:448 (wesnoth-debug+0x39abe0b)
#5 std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_vector.h:948 (wesnoth-debug+0x39a49c1)
#6 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:273 (wesnoth-debug+0x65d2d4c)
#7 parse_variable src/serialization/parser.cpp:356 (wesnoth-debug+0x6524c64)
#8 operator() src/serialization/parser.cpp:140 (wesnoth-debug+0x651fc42)
#9 void read_compressed<boost::iostreams::basic_gzip_decompressor<std::allocator<char> > >(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:664 (wesnoth-debug+0x6532432)
#10 read_gz(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:670 (wesnoth-debug+0x652781c)
#11 game_config::config_cache::read_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:111 (wesnoth-debug+0x542b3d5)
#12 game_config::config_cache::read_cache(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:194 (wesnoth-debug+0x542c4cb)
#13 game_config::config_cache::load_configs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:274 (wesnoth-debug+0x542e614)
#14 game_config::config_cache::get_config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:80 (wesnoth-debug+0x542af0e)
#15 game_config_manager::load_game_config(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:262 (wesnoth-debug+0x404ba77)
#16 operator() src/game_config_manager.cpp:139 (wesnoth-debug+0x4049200)
#17 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x4052dbe)
#18 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#19 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:221 (wesnoth-debug+0x427709a)
#20 game_config_manager::load_game_config_with_loadscreen(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:138 (wesnoth-debug+0x40495bc)
#21 game_config_manager::init_game_config(game_config_manager::FORCE_RELOAD_CONFIG) src/game_config_manager.cpp:89 (wesnoth-debug+0x4048ab5)
#22 operator() src/wesnoth.cpp:707 (wesnoth-debug+0x3ca2ad4)
#23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3caac6c)
#24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x427459d)
#26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279c57)
#27 <null> <null> (libboost_thread.so.1.62.0+0x11f95)
Previous read of size 1 at 0x7b10000159f5 by main thread:
[failed to restore the stack]
Thread T4 (tid=29354, 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+0x4277da5)
#3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x42748c1)
#4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#6 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#7 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x6f3d1) in operator delete(void*)
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Read of size 8 at 0x7b14000a7040 by thread T1:
#0 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> > >::_S_left(std::_Rb_tree_node_base*) /usr/include/c++/7/bits/stl_tree.h:764 (wesnoth-debug+0x422a26b)
#1 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_lower_bound(std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >*, std::_Rb_tree_node_base*, unsigned long const&) /usr/include/c++/7/bits/stl_tree.h:1873 (wesnoth-debug+0x422a3ab)
#2 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> > >::find(unsigned long const&) <null> (wesnoth-debug+0x4229807)
#3 std::map<unsigned long, gui2::timer, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::find(unsigned long const&) <null> (wesnoth-debug+0x422905e)
#4 timer_callback src/gui/core/timer.cpp:92 (wesnoth-debug+0x4227917)
#5 <null> <null> (libSDL2-2.0.so.0+0x67fc8)
Previous write of size 8 at 0x7b14000a7040 by main thread:
[failed to restore the stack]
Location is heap block of size 80 at 0x7b14000a7030 allocated by main thread:
#0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a)
#1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x422c09a)
#2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x422bdc5)
#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_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x422b893)
#4 std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >* 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_create_node<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x422a895)
#5 std::pair<std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >, bool> 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_emplace_unique<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) <null> (wesnoth-debug+0x4229e9a)
#6 std::pair<std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >, bool> std::map<unsigned long, gui2::timer, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::emplace<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) <null> (wesnoth-debug+0x422952d)
#7 gui2::add_timer(unsigned int, std::function<void (unsigned long)> const&, bool) src/gui/core/timer.cpp:137 (wesnoth-debug+0x4227edd)
#8 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:126 (wesnoth-debug+0x4274af3)
#9 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#10 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#11 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#12 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/include/c++/7/bits/stl_tree.h:764 in 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> > >::_S_left(std::_Rb_tree_node_base*)
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x556f7405a240 by thread T4:
#0 void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<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&) /usr/include/c++/7/bits/vector.tcc:451 (wesnoth-debug+0x39abe3c)
#1 std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_vector.h:948 (wesnoth-debug+0x39a49c1)
#2 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:273 (wesnoth-debug+0x65d2d4c)
#3 parse_variable src/serialization/parser.cpp:356 (wesnoth-debug+0x6524c64)
#4 operator() src/serialization/parser.cpp:140 (wesnoth-debug+0x651fc42)
#5 void read_compressed<boost::iostreams::basic_gzip_decompressor<std::allocator<char> > >(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:664 (wesnoth-debug+0x6532432)
#6 read_gz(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:670 (wesnoth-debug+0x652781c)
#7 game_config::config_cache::read_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:111 (wesnoth-debug+0x542b3d5)
#8 game_config::config_cache::read_cache(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:194 (wesnoth-debug+0x542c4cb)
#9 game_config::config_cache::load_configs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:274 (wesnoth-debug+0x542e614)
#10 game_config::config_cache::get_config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:80 (wesnoth-debug+0x542af0e)
#11 game_config_manager::load_game_config(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:262 (wesnoth-debug+0x404ba77)
#12 operator() src/game_config_manager.cpp:139 (wesnoth-debug+0x4049200)
#13 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x4052dbe)
#14 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#15 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:221 (wesnoth-debug+0x427709a)
#16 game_config_manager::load_game_config_with_loadscreen(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:138 (wesnoth-debug+0x40495bc)
#17 game_config_manager::init_game_config(game_config_manager::FORCE_RELOAD_CONFIG) src/game_config_manager.cpp:89 (wesnoth-debug+0x4048ab5)
#18 operator() src/wesnoth.cpp:707 (wesnoth-debug+0x3ca2ad4)
#19 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3caac6c)
#20 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#21 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x427459d)
#22 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279c57)
#23 <null> <null> (libboost_thread.so.1.62.0+0x11f95)
Previous read of size 8 at 0x556f7405a240 by main thread:
[failed to restore the stack]
Location is global '(anonymous namespace)::id_to_textdomain' of size 24 at 0x556f7405a240 (wesnoth-debug+0x00000c313240)
Thread T4 (tid=29354, 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+0x4277da5)
#3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x42748c1)
#4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#6 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#7 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/vector.tcc:451 in void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<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&)
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x556f7405a248 by thread T4:
#0 void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<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&) /usr/include/c++/7/bits/vector.tcc:452 (wesnoth-debug+0x39abe7c)
#1 std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_vector.h:948 (wesnoth-debug+0x39a49c1)
#2 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:273 (wesnoth-debug+0x65d2d4c)
#3 parse_variable src/serialization/parser.cpp:356 (wesnoth-debug+0x6524c64)
#4 operator() src/serialization/parser.cpp:140 (wesnoth-debug+0x651fc42)
#5 void read_compressed<boost::iostreams::basic_gzip_decompressor<std::allocator<char> > >(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:664 (wesnoth-debug+0x6532432)
#6 read_gz(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:670 (wesnoth-debug+0x652781c)
#7 game_config::config_cache::read_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:111 (wesnoth-debug+0x542b3d5)
#8 game_config::config_cache::read_cache(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:194 (wesnoth-debug+0x542c4cb)
#9 game_config::config_cache::load_configs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:274 (wesnoth-debug+0x542e614)
#10 game_config::config_cache::get_config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:80 (wesnoth-debug+0x542af0e)
#11 game_config_manager::load_game_config(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:262 (wesnoth-debug+0x404ba77)
#12 operator() src/game_config_manager.cpp:139 (wesnoth-debug+0x4049200)
#13 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x4052dbe)
#14 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#15 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:221 (wesnoth-debug+0x427709a)
#16 game_config_manager::load_game_config_with_loadscreen(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:138 (wesnoth-debug+0x40495bc)
#17 game_config_manager::init_game_config(game_config_manager::FORCE_RELOAD_CONFIG) src/game_config_manager.cpp:89 (wesnoth-debug+0x4048ab5)
#18 operator() src/wesnoth.cpp:707 (wesnoth-debug+0x3ca2ad4)
#19 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3caac6c)
#20 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#21 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x427459d)
#22 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279c57)
#23 <null> <null> (libboost_thread.so.1.62.0+0x11f95)
Previous read of size 8 at 0x556f7405a248 by main thread:
[failed to restore the stack]
Location is global '(anonymous namespace)::id_to_textdomain' of size 24 at 0x556f7405a240 (wesnoth-debug+0x00000c313248)
Thread T4 (tid=29354, 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+0x4277da5)
#3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x42748c1)
#4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#6 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#7 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/vector.tcc:452 in void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<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&)
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Read of size 8 at 0x7b200002a910 by main thread:
#0 memcpy <null> (libtsan.so.0+0x31065)
#1 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (libstdc++.so.6+0x11dd91)
#2 t_string_base::walker::walker(t_string_base const&) src/tstring.cpp:69 (wesnoth-debug+0x65cf32b)
#3 t_string_base::str[abi:cxx11]() const src/tstring.cpp:573 (wesnoth-debug+0x65d5dd3)
#4 t_string_base::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&() const src/tstring.hpp:101 (wesnoth-debug+0x393e20d)
#5 t_string::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&() const src/tstring.hpp:185 (wesnoth-debug+0x393e334)
#6 gui2::styled_widget::update_canvas() src/gui/widgets/styled_widget.cpp:376 (wesnoth-debug+0x4763982)
#7 gui2::styled_widget::set_label(t_string const&) src/gui/widgets/styled_widget.cpp:331 (wesnoth-debug+0x47626a6)
#8 gui2::dialogs::loading_screen::timer_callback(gui2::window&) src/gui/dialogs/loading_screen.cpp:180 (wesnoth-debug+0x4276225)
#9 void std::__invoke_impl<void, void (gui2::dialogs::loading_screen::*&)(gui2::window&), gui2::dialogs::loading_screen*&, gui2::window&>(std::__invoke_memfun_deref, void (gui2::dialogs::loading_screen::*&)(gui2::window&), gui2::dialogs::loading_screen*&, gui2::window&) /usr/include/c++/7/bits/invoke.h:73 (wesnoth-debug+0x42978a8)
#10 std::__invoke_result<void (gui2::dialogs::loading_screen::*&)(gui2::window&), gui2::dialogs::loading_screen*&, gui2::window&>::type std::__invoke<void (gui2::dialogs::loading_screen::*&)(gui2::window&), gui2::dialogs::loading_screen*&, gui2::window&>(void (gui2::dialogs::loading_screen::*&)(gui2::window&), gui2::dialogs::loading_screen*&, gui2::window&) <null> (wesnoth-debug+0x429676d)
#11 void std::_Bind<void (gui2::dialogs::loading_screen::*(gui2::dialogs::loading_screen*, std::reference_wrapper<gui2::window>))(gui2::window&)>::__call<void, unsigned long&&, 0ul, 1ul>(std::tuple<unsigned long&&>&&, std::_Index_tuple<0ul, 1ul>) /usr/include/c++/7/functional:467 (wesnoth-debug+0x4294646)
#12 void std::_Bind<void (gui2::dialogs::loading_screen::*(gui2::dialogs::loading_screen*, std::reference_wrapper<gui2::window>))(gui2::window&)>::operator()<unsigned long, void>(unsigned long&&) /usr/include/c++/7/functional:551 (wesnoth-debug+0x4290add)
#13 std::_Function_handler<void (unsigned long), std::_Bind<void (gui2::dialogs::loading_screen::*(gui2::dialogs::loading_screen*, std::reference_wrapper<gui2::window>))(gui2::window&)> >::_M_invoke(std::_Any_data const&, unsigned long&&) /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x428c451)
#14 std::function<void (unsigned long)>::operator()(unsigned long) const <null> (wesnoth-debug+0x42296b1)
#15 gui2::execute_timer(unsigned long) src/gui/core/timer.cpp:186 (wesnoth-debug+0x42289d0)
#16 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:393 (wesnoth-debug+0x420e144)
#17 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b97ed)
#18 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c46b24)
#19 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a3237)
#20 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#21 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#22 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Previous write of size 8 at 0x7b200002a910 by thread T4:
[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+0x42a3237)
#3 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#4 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#5 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Location is heap block of size 128 at 0x7b200002a900 allocated by thread T4:
#0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a)
#1 __gnu_cxx::new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x39c13dc)
#2 std::allocator_traits<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::allocate(std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x39bba4e)
#3 std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_allocate(unsigned long) /usr/include/c++/7/bits/stl_vector.h:172 (wesnoth-debug+0x39b4d2e)
#4 void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<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&) /usr/include/c++/7/bits/vector.tcc:406 (wesnoth-debug+0x39aba0a)
#5 std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/7/bits/stl_vector.h:948 (wesnoth-debug+0x39a49c1)
#6 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:273 (wesnoth-debug+0x65d2d4c)
#7 parse_variable src/serialization/parser.cpp:356 (wesnoth-debug+0x6524c64)
#8 operator() src/serialization/parser.cpp:140 (wesnoth-debug+0x651fc42)
#9 void read_compressed<boost::iostreams::basic_gzip_decompressor<std::allocator<char> > >(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:664 (wesnoth-debug+0x6532432)
#10 read_gz(config&, std::istream&, abstract_validator*) src/serialization/parser.cpp:670 (wesnoth-debug+0x652781c)
#11 game_config::config_cache::read_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:111 (wesnoth-debug+0x542b3d5)
#12 game_config::config_cache::read_cache(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:194 (wesnoth-debug+0x542c4cb)
#13 game_config::config_cache::load_configs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:274 (wesnoth-debug+0x542e614)
#14 game_config::config_cache::get_config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config&) src/config_cache.cpp:80 (wesnoth-debug+0x542af0e)
#15 game_config_manager::load_game_config(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:262 (wesnoth-debug+0x404ba77)
#16 operator() src/game_config_manager.cpp:139 (wesnoth-debug+0x4049200)
#17 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x4052dbe)
#18 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#19 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:221 (wesnoth-debug+0x427709a)
#20 game_config_manager::load_game_config_with_loadscreen(game_config_manager::FORCE_RELOAD_CONFIG, game_classification const*) src/game_config_manager.cpp:138 (wesnoth-debug+0x40495bc)
#21 game_config_manager::init_game_config(game_config_manager::FORCE_RELOAD_CONFIG) src/game_config_manager.cpp:89 (wesnoth-debug+0x4048ab5)
#22 operator() src/wesnoth.cpp:707 (wesnoth-debug+0x3ca2ad4)
#23 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3caac6c)
#24 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#25 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x427459d)
#26 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279c57)
#27 <null> <null> (libboost_thread.so.1.62.0+0x11f95)
Thread T4 (tid=29354, 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+0x4277da5)
#3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x42748c1)
#4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#6 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#7 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x31065) in memcpy
==================
20180527 00:50:53 warning general: no location found for 'data/add-ons/Naia/translations', skipping textdomain
20180527 00:50:53 warning general: no location found for 'data/add-ons/Naia/translations', skipping textdomain
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x556f7405af90 by thread T4:
#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+0x65d7641)
#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+0x65d7759)
#2 t_string::operator=(t_string const&) src/tstring.cpp:635 (wesnoth-debug+0x65d6953)
#3 font::load_font_config() src/font/font_config.cpp:163 (wesnoth-debug+0x66de89c)
#4 operator() src/wesnoth.cpp:716 (wesnoth-debug+0x3ca2bd8)
#5 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3caac6c)
#6 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#7 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x427459d)
#8 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279c57)
#9 <null> <null> (libboost_thread.so.1.62.0+0x11f95)
Previous read of size 8 at 0x556f7405af90 by main thread:
[failed to restore the stack]
Location is global 'font::(anonymous namespace)::family_order_sans' of size 16 at 0x556f7405af90 (wesnoth-debug+0x00000c313f90)
Thread T4 (tid=29354, 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+0x4277da5)
#3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x42748c1)
#4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#6 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#7 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race /usr/include/c++/7/bits/shared_ptr_base.h:1034 in 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&)
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x7b1400016880 by thread T4:
#0 operator delete(void*) <null> (libtsan.so.0+0x6f3d1)
#1 std::_Sp_counted_ptr<t_string_base*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/7/bits/shared_ptr_base.h:376 (wesnoth-debug+0x4a871cf)
#2 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/7/bits/shared_ptr_base.h:154 (wesnoth-debug+0x394a3e9)
#3 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+0x3ab70aa)
#4 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+0x65d76a7)
#5 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+0x65d7759)
#6 t_string::operator=(t_string const&) src/tstring.cpp:635 (wesnoth-debug+0x65d6953)
#7 font::load_font_config() src/font/font_config.cpp:163 (wesnoth-debug+0x66de89c)
#8 operator() src/wesnoth.cpp:716 (wesnoth-debug+0x3ca2bd8)
#9 _M_invoke /usr/include/c++/7/bits/std_function.h:316 (wesnoth-debug+0x3caac6c)
#10 std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706 (wesnoth-debug+0x39a426d)
#11 operator() src/gui/dialogs/loading_screen.cpp:116 (wesnoth-debug+0x427459d)
#12 run /usr/include/boost/thread/detail/thread.hpp:116 (wesnoth-debug+0x4279c57)
#13 <null> <null> (libboost_thread.so.1.62.0+0x11f95)
Previous read of size 1 at 0x7b1400016881 by main thread:
[failed to restore the stack]
Thread T4 (tid=29354, 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+0x4277da5)
#3 gui2::dialogs::loading_screen::pre_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:123 (wesnoth-debug+0x42748c1)
#4 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:85 (wesnoth-debug+0x42a2eca)
#5 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#6 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#7 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x6f3d1) in operator delete(void*)
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x7b14000a7058 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::dialogs::loading_screen::clear_timer() src/gui/dialogs/loading_screen.cpp:233 (wesnoth-debug+0x4277855)
#10 gui2::dialogs::loading_screen::post_show(gui2::window&) src/gui/dialogs/loading_screen.cpp:138 (wesnoth-debug+0x427531e)
#11 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:108 (wesnoth-debug+0x42a38bb)
#12 gui2::dialogs::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#13 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#14 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Previous read of size 4 at 0x7b14000a705c 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::loading_screen::display(std::function<void ()>) src/gui/dialogs/loading_screen.cpp:223 (wesnoth-debug+0x42771c8)
#4 do_gameloop src/wesnoth.cpp:705 (wesnoth-debug+0x3ca33cb)
#5 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*)
==================
Checking lua scripts... ok
src/gui/widgets/stacked_widget.cpp:60:45: runtime error: member call on address 0x7b6c0000e000 which does not point to an object of type 'stacked_widget'
0x7b6c0000e000: note: object has invalid vptr
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
src/gui/widgets/panel.cpp:39:68: runtime error: member call on address 0x7b6c0000e700 which does not point to an object of type 'panel'
0x7b6c0000e700: note: object has invalid vptr
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
src/gui/widgets/multi_page.cpp:37:45: runtime error: member call on address 0x7b7000016800 which does not point to an object of type 'multi_page'
0x7b7000016800: note: object has invalid vptr
e2 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
src/gui/widgets/button.cpp:44:44: runtime error: member call on address 0x7b6400029900 which does not point to an object of type 'button'
0x7b6400029900: note: object has invalid vptr
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^~~~~~~~~~~~~~~~~~~~~~~
invalid vptr
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Write of size 8 at 0x7b2800000a18 by thread T2:
#0 memcpy <null> (libtsan.so.0+0x31065)
#1 pa_srbchannel_read <null> (libpulsecommon-11.1.so+0x46e5e)
Previous write of size 8 at 0x7b2800000a18 by thread T3:
#0 memcpy <null> (libtsan.so.0+0x31065)
#1 pa_srbchannel_read <null> (libpulsecommon-11.1.so+0x46e5e)
Location is heap block of size 152 at 0x7b2800000a00 allocated by main thread:
#0 malloc <null> (libtsan.so.0+0x2aa63)
#1 pa_xmalloc <null> (libpulse.so.0+0x39536)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Thread T2 'PulseHotplug' (tid=29350, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x2b6db)
#1 <null> <null> (libSDL2-2.0.so.0+0xd8e36)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
Thread T3 'SDLAudioP2' (tid=29351, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x2b6db)
#1 <null> <null> (libSDL2-2.0.so.0+0xd8e36)
#2 game_launcher::game_launcher(commandline_options const&, char const*) src/game_launcher.cpp:279 (wesnoth-debug+0x40ea0e1)
#3 do_gameloop src/wesnoth.cpp:649 (wesnoth-debug+0x3ca2ffb)
#4 main src/wesnoth.cpp:1143 (wesnoth-debug+0x3ca5b33)
SUMMARY: ThreadSanitizer: data race (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x31065) in memcpy
==================
==================
WARNING: ThreadSanitizer: data race (pid=29308)
Read of size 4 at 0x7b140016d1bc by thread T1:
#0 timer_callback src/gui/core/timer.cpp:106 (wesnoth-debug+0x4227a37)
#1 <null> <null> (libSDL2-2.0.so.0+0x67fc8)
Previous write of size 8 at 0x7b140016d1b8 by main thread:
[failed to restore the stack]
Location is heap block of size 80 at 0x7b140016d190 allocated by main thread:
#0 operator new(unsigned long) <null> (libtsan.so.0+0x6f14a)
#1 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >::allocate(unsigned long, void const*) /usr/include/c++/7/ext/new_allocator.h:111 (wesnoth-debug+0x422c09a)
#2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> > >&, unsigned long) /usr/include/c++/7/bits/alloc_traits.h:436 (wesnoth-debug+0x422bdc5)
#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_get_node() /usr/include/c++/7/bits/stl_tree.h:588 (wesnoth-debug+0x422b893)
#4 std::_Rb_tree_node<std::pair<unsigned long const, gui2::timer> >* 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_create_node<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) /usr/include/c++/7/bits/stl_tree.h:642 (wesnoth-debug+0x422a895)
#5 std::pair<std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >, bool> 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_emplace_unique<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) <null> (wesnoth-debug+0x4229e9a)
#6 std::pair<std::_Rb_tree_iterator<std::pair<unsigned long const, gui2::timer> >, bool> std::map<unsigned long, gui2::timer, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, gui2::timer> > >::emplace<unsigned long&, gui2::timer&>(unsigned long&, gui2::timer&) <null> (wesnoth-debug+0x422952d)
#7 gui2::add_timer(unsigned int, std::function<void (unsigned long)> const&, bool) src/gui/core/timer.cpp:137 (wesnoth-debug+0x4227edd)
#8 gui2::event::mouse_motion::start_hover_timer(gui2::widget*, point const&) src/gui/core/event/distributor.cpp:329 (wesnoth-debug+0x41cbc32)
#9 gui2::event::mouse_motion::mouse_enter(gui2::widget*) src/gui/core/event/distributor.cpp:254 (wesnoth-debug+0x41c9d8c)
#10 gui2::event::mouse_motion::signal_handler_sdl_mouse_motion(gui2::event::ui_event, bool&, point const&) src/gui/core/event/distributor.cpp:186 (wesnoth-debug+0x41c817f)
#11 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+0x4208eb6)
#12 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+0x4206b21)
#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&)>::__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+0x4203940)
#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&)>::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+0x41f94d2)
#15 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+0x41e0fb1)
#16 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+0x419d052)
#17 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+0x418f1b7)
#18 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+0x41896e1)
#19 gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&, point const&) src/gui/core/event/dispatcher.cpp:144 (wesnoth-debug+0x418326f)
#20 gui2::event::sdl_event_handler::mouse(gui2::event::ui_event, point const&) src/gui/core/event/handler.cpp:586 (wesnoth-debug+0x4211efe)
#21 gui2::event::sdl_event_handler::handle_event(SDL_Event const&) src/gui/core/event/handler.cpp:361 (wesnoth-debug+0x420d6e1)
#22 events::pump() src/events.cpp:616 (wesnoth-debug+0x66b97ed)
#23 gui2::window::show(bool, unsigned int) src/gui/widgets/window.cpp:550 (wesnoth-debug+0x3c46b24)
#24 gui2::dialogs::modal_dialog::show(unsigned int) src/gui/dialogs/modal_dialog.cpp:89 (wesnoth-debug+0x42a3237)
#25 do_gameloop src/wesnoth.cpp:860 (wesnoth-debug+0x3ca4971)
#26 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 src/gui/core/timer.cpp:106 in timer_callback
==================
Comments