URL: <http://gna.org/bugs/?25334>
Summary: Stack overflow / segmentation fault on viewing Help in Japanese Project: Battle for Wesnoth Submitted by: wedge009 Submitted on: Tue 22 Nov 2016 05:50:40 PM AEDT Category: Bug Severity: 3 - Normal Priority: 5 - Normal Item Group: Translations Status: None Privacy: Public Assigned to: None Originator Email: Open/Closed: Open Discussion Lock: Any Release: 1.13.6+dev Operating System: All _______________________________________________________ Details: Encountered this while checking bug #25332, I compiled on commit cbf1c50b. I don't know if this issue happens with other languages - I tried several but only found this happening on Japanese. To replicate: 1. Start Wesnoth 2. Change language to Japanese (assuming you're not already using it) 3. Open Help. 4. Observe crash. Stack trace I got from Windows build looks like it's stuck on recursion in help_text_area::add_text_item(): ntdll.dll!770fdf76() Unknown [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] [External Code] wesnoth.exe!font::word_wrap_text(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & unwrapped_text, int font_size, int max_width, int max_height, int max_lines, bool partial_line) Line 433 C++ wesnoth.exe!help::split_in_width(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & s, const int font_size, const unsigned int width) Line 1334 C++ wesnoth.exe!help::help_text_area::add_text_item(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & text, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & ref_dst, bool broken_link, int _font_size, bool bold, bool italic, SDL_Color text_color) Line 327 C++ wesnoth.exe!help::help_text_area::add_text_item(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & text, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & ref_dst, bool broken_link, int _font_size, bool bold, bool italic, SDL_Color text_color) Line 362 C++ [repeat another 1836 times...] wesnoth.exe!help::help_text_area::set_items() Line 150 C++ wesnoth.exe!help::help_text_area::show_topic(const help::topic & t) Line 63 C++ wesnoth.exe!help::help_browser::show_topic(const help::topic & t, bool save_in_history) Line 213 C++ wesnoth.exe!help::help_browser::show_topic(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & topic_id) Line 188 C++ wesnoth.exe!help::show_help(CVideo & video, const help::section & toplevel_sec, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & show_topic, int xloc, int yloc) Line 216 C++ wesnoth.exe!help::show_help(CVideo & video, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & show_topic, int xloc, int yloc) Line 119 C++ wesnoth.exe!gui2::dialogs::title_screen::pre_show::__l2::<lambda>(gui2::window & __formal) Line 301 C++ [External Code] wesnoth.exe!gui2::dialogs::register_button::__l2::<lambda>(gui2::event::dispatcher & w, gui2::event::ui_event __formal, bool & __formal, bool & __formal) Line 164 C++ [External Code] wesnoth.exe!gui2::event::trigger::operator()(std::function<void __cdecl(gui2::event::dispatcher &,enum gui2::event::ui_event,bool &,bool &)> functor, gui2::event::dispatcher & dispatcher, const gui2::event::ui_event event, bool & handled, bool & halt) Line 141 C++ wesnoth.exe!gui2::event::implementation::fire_event<std::function<void __cdecl(gui2::event::dispatcher &,enum gui2::event::ui_event,bool &,bool &)>,gui2::event::trigger>(const gui2::event::ui_event event, std::vector<std::pair<gui2::widget *,enum gui2::event::ui_event>,std::allocator<std::pair<gui2::widget *,enum gui2::event::ui_event> > > & event_chain, gui2::widget * dispatcher, gui2::widget * w, gui2::event::trigger functor) Line 451 C++ wesnoth.exe!gui2::event::fire_event<std::function<void __cdecl(gui2::event::dispatcher &,enum gui2::event::ui_event,bool &,bool &)>,gui2::event::trigger>(const gui2::event::ui_event event, gui2::widget * dispatcher, gui2::widget * w, gui2::event::trigger functor) Line 528 C++ wesnoth.exe!gui2::event::dispatcher::fire(const gui2::event::ui_event event, gui2::widget & target) Line 173 C++ wesnoth.exe!gui2::event::mouse_button<7,8,9,10,11,12>::mouse_button_click(gui2::widget * widget) Line 594 C++ wesnoth.exe!gui2::event::mouse_button<7,8,9,10,11,12>::signal_handler_sdl_button_up(const gui2::event::ui_event event, bool & handled, const gui2::point & coordinate) Line 551 C++ [External Code] wesnoth.exe!gui2::event::trigger_mouse::operator()(std::function<void __cdecl(gui2::event::dispatcher &,enum gui2::event::ui_event,bool &,bool &,gui2::point const &)> functor, gui2::event::dispatcher & dispatcher, const gui2::event::ui_event event, bool & handled, bool & halt) Line 193 C++ wesnoth.exe!gui2::event::implementation::fire_event<std::function<void __cdecl(gui2::event::dispatcher &,enum gui2::event::ui_event,bool &,bool &,gui2::point const &)>,gui2::event::trigger_mouse>(const gui2::event::ui_event event, std::vector<std::pair<gui2::widget *,enum gui2::event::ui_event>,std::allocator<std::pair<gui2::widget *,enum gui2::event::ui_event> > > & event_chain, gui2::widget * dispatcher, gui2::widget * w, gui2::event::trigger_mouse functor) Line 451 C++ wesnoth.exe!gui2::event::fire_event<std::function<void __cdecl(gui2::event::dispatcher &,enum gui2::event::ui_event,bool &,bool &,gui2::point const &)>,gui2::event::trigger_mouse>(const gui2::event::ui_event event, gui2::widget * dispatcher, gui2::widget * w, gui2::event::trigger_mouse functor) Line 528 C++ wesnoth.exe!gui2::event::dispatcher::fire(const gui2::event::ui_event event, gui2::widget & target, const gui2::point & coordinate) Line 203 C++ wesnoth.exe!gui2::event::sdl_event_handler::mouse(const gui2::event::ui_event event, const gui2::point & position) Line 569 C++ wesnoth.exe!gui2::event::sdl_event_handler::mouse_button_up(const gui2::point & position, const unsigned char button) Line 588 C++ wesnoth.exe!gui2::event::sdl_event_handler::handle_event(const SDL_Event & event) Line 341 C++ wesnoth.exe!events::pump() Line 593 C++ wesnoth.exe!gui2::window::show(const bool restore, const unsigned int auto_close_timeout) Line 640 C++ wesnoth.exe!gui2::dialogs::modal_dialog::show(CVideo & video, const unsigned int auto_close_time) Line 70 C++ wesnoth.exe!do_gameloop(const std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > & args) Line 789 C++ wesnoth.exe!SDL_main(int argc, char * * argv) Line 1055 C++ wesnoth.exe!main_utf8(int argc, char * * argv) Line 126 C wesnoth.exe!main_getcmdline(...) Line 159 C wesnoth.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int sw) Line 203 C [External Code] _______________________________________________________ Reply to this item at: <http://gna.org/bugs/?25334> _______________________________________________ Message sent via/by Gna! http://gna.org/ _______________________________________________ Wesnoth-bugs mailing list Wesnoth-bugs@gna.org https://mail.gna.org/listinfo/wesnoth-bugs