double free or corruption (!prev)
Thread 1 "wesnoth-debug" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff0c81e7b in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff0c83231 in __GI_abort () at abort.c:79
#2 0x00007ffff0cc47b7 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff0dcd0f3 "%s\n") at ../sysdeps/posix/libc_fatal.c:181
#3 0x00007ffff0ccad5a in malloc_printerr (str=str@entry=0x7ffff0dcee00 "double free or corruption (!prev)") at malloc.c:5350
#4 0x00007ffff0ccc81c in _int_free (av=0x7ffff1001c40 <main_arena>, p=0x555558bb41b0, have_lock=<optimized out>) at malloc.c:4281
#5 0x00007ffff43169ff in () at /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0
#6 0x00007ffff4349e61 in () at /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0
#7 0x00005555566fc3a6 in surface::free_surface() (this=0x7fffffffa758) at src/sdl/surface.cpp:35
#8 0x000055555584d56e in surface::~surface() (this=0x7fffffffa758, __in_chrg=<optimized out>) at src/sdl/surface.hpp:43
#9 0x0000555555888b2e in gui2::image::calculate_best_size() const (this=0x555558635250) at src/gui/widgets/image.cpp:46
#10 0x0000555555c6a36f in gui2::widget::get_best_size() const (this=0x555558635250) at src/gui/widgets/widget.cpp:196
#11 0x0000555555c29c50 in gui2::grid::child::get_best_size() const (this=0x5555589ef710) at src/gui/widgets/grid.cpp:757
#12 0x0000555555c27116 in gui2::grid::calculate_best_size() const (this=0x55555a8e5738) at src/gui/widgets/grid.cpp:436
#13 0x0000555555c6a36f in gui2::widget::get_best_size() const (this=0x55555a8e5738) at src/gui/widgets/widget.cpp:196
#14 0x0000555555b6dc76 in gui2::container_base::calculate_best_size() const (this=0x55555a8e5340) at src/gui/widgets/container_base.cpp:152
#15 0x0000555555c6a36f in gui2::widget::get_best_size() const (this=0x55555a8e5340) at src/gui/widgets/widget.cpp:196
#16 0x0000555555936e4f in gui2::window::layout() (this=0x55555a8e5340) at src/gui/widgets/window.cpp:892
#17 0x0000555555935e50 in gui2::window::draw() (this=0x55555a8e5340) at src/gui/widgets/window.cpp:630
#18 0x000055555594c724 in std::__invoke_impl<void, void (gui2::window::*&)(), gui2::window*&>(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) (__f=@0x55555854bd70: (void (gui2::window::*)(gui2::window * const)) 0x555555935d64 <gui2::window::draw()>, __t=@0x55555854bd80: 0x55555a8e5340) at /usr/include/c++/7/bits/invoke.h:73
#19 0x000055555594a87f in std::__invoke<void (gui2::window::*&)(), gui2::window*&>(void (gui2::window::*&)(), gui2::window*&) (__fn=@0x55555854bd70: (void (gui2::window::*)(gui2::window * const)) 0x555555935d64 <gui2::window::draw()>, __args#0=@0x55555854bd80: 0x55555a8e5340) at /usr/include/c++/7/bits/invoke.h:95
#20 0x0000555555948bb2 in 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>) (this=0x55555854bd70, __args=<unknown type in /home/shadowm/src/wesnoth-1.14/wesnoth-debug, CU 0xad4617, DIE 0xb71bd1>) at /usr/include/c++/7/functional:467
#21 0x0000555555944f99 in 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&) (this=0x55555854bd70, __args#0=..., __args#1=<unknown type in /home/shadowm/src/wesnoth-1.14/wesnoth-debug, CU 0xad4617, DIE 0xb79a88>, __args#2=@0x7fffffffc07f: false, __args#3=@0x7fffffffc07e: false)
at /usr/include/c++/7/functional:551
#22 0x0000555555941355 in 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&) (__functor=..., __args#0=..., __args#1=<unknown type in /home/shadowm/src/wesnoth-1.14/wesnoth-debug, CU 0xad4617, DIE 0xb80f20>, __args#2=@0x7fffffffc07f: false, __args#3=@0x7fffffffc07e: false) at /usr/include/c++/7/bits/std_function.h:316
#23 0x0000555555ad31bd in std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>::operator()(gui2::widget&, gui2::event::ui_event, bool&, bool&) const (this=0x555558a76840, __args#0=..., __args#1=gui2::event::DRAW, __args#2=@0x7fffffffc07f: false, __args#3=@0x7fffffffc07e: false) at /usr/include/c++/7/bits/std_function.h:706
#24 0x0000555555acdee2 in 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*) (event=gui2::event::DRAW, event_chain=std::vector of length 0, capacity 0, dispatcher=0x55555a8e5340, w=0x55555a8e5340) at src/gui/core/event/dispatcher_private.hpp:433
#25 0x0000555555acbf1e in gui2::event::fire_event<std::function<void (gui2::widget&, gui2::event::ui_event, bool&, bool&)>>(gui2::event::ui_event, gui2::event::dispatcher*, gui2::widget*) (event=gui2::event::DRAW, d=0x55555a8e5350, w=0x55555a8e5340) at src/gui/core/event/dispatcher_private.hpp:505
---Type <return> to continue, or q <return> to quit---
#26 0x0000555555aca1e1 in gui2::event::dispatcher::fire(gui2::event::ui_event, gui2::widget&) (this=0x55555a8e5350, event=gui2::event::DRAW, target=...) at src/gui/core/event/dispatcher.cpp:137
#27 0x0000555555af296f in gui2::event::sdl_event_handler::draw() (this=0x555558a07b30) at src/gui/core/event/handler.cpp:537
#28 0x0000555555af2aa5 in gui2::event::sdl_event_handler::draw_everything() (this=0x555558a07b30) at src/gui/core/event/handler.cpp:553
#29 0x0000555555af21b6 in gui2::event::sdl_event_handler::handle_event(SDL_Event const&) (this=0x555558a07b30, event=...) at src/gui/core/event/handler.cpp:389
#30 0x00005555565caf35 in events::pump() () at src/events.cpp:585
#31 0x0000555555935a13 in gui2::window::show(bool, unsigned int) (this=0x55555a8e5340, restore=false, auto_close_timeout=0) at src/gui/widgets/window.cpp:550
#32 0x0000555555b1fdd7 in gui2::dialogs::modal_dialog::show(unsigned int) (this=0x7fffffffc910, auto_close_time=0) at src/gui/dialogs/modal_dialog.cpp:89
#33 0x0000555555b13d67 in gui2::dialogs::loading_screen::display(std::function<void ()>) (f=...) at src/gui/dialogs/loading_screen.cpp:223
#34 0x0000555555aae39f in game_launcher::launch_game(game_launcher::RELOAD_GAME_DATA) (this=0x55555739f1c0, reload=game_launcher::RELOAD_DATA) at src/game_launcher.cpp:968
#35 0x0000555555952ef9 in do_gameloop(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> > > > const&) (args=std::vector of length 1, capacity 1 = {...}) at src/wesnoth.cpp:897
#36 0x0000555555953790 in main(int, char**) (argc=1, argv=0x7fffffffde08) at src/wesnoth.cpp:1143
Comments