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 , p=0x555558bb41b0, have_lock=) 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=) 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(std::__invoke_memfun_deref, void (gui2::window::*&)(), gui2::window*&) (__f=@0x55555854bd70: (void (gui2::window::*)(gui2::window * const)) 0x555555935d64 , __t=@0x55555854bd80: 0x55555a8e5340) at /usr/include/c++/7/bits/invoke.h:73 #19 0x000055555594a87f in std::__invoke(void (gui2::window::*&)(), gui2::window*&) (__fn=@0x55555854bd70: (void (gui2::window::*)(gui2::window * const)) 0x555555935d64 , __args#0=@0x55555854bd80: 0x55555a8e5340) at /usr/include/c++/7/bits/invoke.h:95 #20 0x0000555555948bb2 in std::_Bind::__call(std::tuple&&, std::_Index_tuple<0ul>) (this=0x55555854bd70, __args=) at /usr/include/c++/7/functional:467 #21 0x0000555555944f99 in std::_Bind::operator()(gui2::widget&, gui2::event::ui_event&&, bool&, bool&) (this=0x55555854bd70, __args#0=..., __args#1=, __args#2=@0x7fffffffc07f: false, __args#3=@0x7fffffffc07e: false) at /usr/include/c++/7/functional:551 #22 0x0000555555941355 in std::_Function_handler >::_M_invoke(std::_Any_data const&, gui2::widget&, gui2::event::ui_event&&, bool&, bool&) (__functor=..., __args#0=..., __args#1=, __args#2=@0x7fffffffc07f: false, __args#3=@0x7fffffffc07e: false) at /usr/include/c++/7/bits/std_function.h:316 #23 0x0000555555ad31bd in std::function::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>(gui2::event::ui_event, std::vector, std::allocator > >&, 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>(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 to continue, or q 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) (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::allocator >, std::allocator, std::allocator > > > 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