[ オリジナルレポート ]

BugID: #06268

カテゴリ 重要度 ステータス 解決状況 登録日時 最終更新
クラッシュ/フリーズ重要 (本体)解決済み修正済み2016-07-01 14:082016-07-01 15:06
 
テスターcuavas担当者cuavasソース
バージョン0.175発生バージョン修正バージョン0.176
修正コミットプルリク
フラグ
セット
セット詳細
 
概 要言語を切り替えるとMAMEがクラッシュする。
詳 細This is reproducible on Windows and Linux with the latest source from git (mame0171-3623-g507cb50). The easiest way to reproduce the crash is select a language that has a proper external translation, switch to a language that lacks a proper external translation, and then try to switch language again. Stack trace is from a 64-bit Linux build, but the same thing happens on Windows as well. I don't know if this happens in 0.175 or if it's somehow related to Nathan's refactoring of the menu code.

Program received signal SIGSEGV, Segmentation fault.
0x000000351348636a in strlen () from /lib64/libc.so.6
(gdb) where
#0 0x000000351348636a in strlen () from /lib64/libc.so.6
#1 0x000000000090dabb in render_font::utf8string_width (this=0x1e0c820, height=height@entry=0.0326651819, aspect=aspect@entry=0.746674061, utf8string=utf8string@entry=0x7c00000077 <error: Cannot access memory at address 0x7c00000077>)
at ../../../../../src/emu/rendfont.cpp:445
#2 0x000000000058ef7c in mame_ui_manager::get_string_width (this=0x1db4590, s=s@entry=0x7c00000077 <error: Cannot access memory at address 0x7c00000077>, text_size=text_size@entry=1) at ../../../../../src/frontend/mame/ui/ui.cpp:508
#3 0x00000000005f9658 in ui::menu::draw (this=this@entry=0x49b7d60, flags=flags@entry=0, origx0=<optimized out>, origy0=<optimized out>) at ../../../../../src/frontend/mame/ui/menu.cpp:731
#4 0x000000000060443a in ui::menu::process (this=this@entry=0x49b7d60, flags=flags@entry=0, x0=x0@entry=0, y0=y0@entry=0) at ../../../../../src/frontend/mame/ui/menu.cpp:401
#5 0x000000000061004c in ui::menu_selector::handle (this=0x49b7d60) at ../../../../../src/frontend/mame/ui/selector.cpp:59
#6 0x000000000060068b in do_handle (this=<optimized out>) at ../../../../../src/frontend/mame/ui/menu.cpp:1236
#7 ui::menu::ui_handler (container=<optimized out>, mui=...) at ../../../../../src/frontend/mame/ui/menu.cpp:1257
#8 0x0000000000599923 in operator() (container=<optimized out>, __closure=<optimized out>) at ../../../../../src/frontend/mame/ui/ui.h:193
#9 std::_Function_handler<unsigned int (render_container*), void mame_ui_manager::set_handler<mame_ui_manager&>(ui_callback_type, unsigned int (*)(render_container*, mame_ui_manager&), mame_ui_manager&)::{lambda(render_container*)#1}>::_M_invoke(std::_Any_data const&, render_container*&&) (__functor=..., __args#0=<optimized out>) at /opt/anteline/gcc51/include/c++/5.1.1/functional:1857
#10 0x0000000000591465 in operator() (__args#0=0x1765c20, this=0x1db45b8) at /opt/anteline/gcc51/include/c++/5.1.1/functional:2271
#11 mame_ui_manager::update_and_render (this=0x1db4590, container=0x1765c20) at ../../../../../src/frontend/mame/ui/ui.cpp:400
#12 0x0000000000549ebf in emulator_info::draw_user_interface (machine=...) at ../../../../../src/frontend/mame/mame.cpp:330
#13 0x00000000009638a8 in video_manager::frame_update (this=0x1db4740, from_debugger=from_debugger@entry=false) at ../../../../../src/emu/video.cpp:225
#14 0x00000000008f908c in running_machine::run (this=this@entry=0x7fffffff6b10, quiet=quiet@entry=true) at ../../../../../src/emu/machine.cpp:346
#15 0x000000000054ac61 in mame_machine_manager::execute (this=this@entry=0x1705610) at ../../../../../src/frontend/mame/mame.cpp:226
#16 0x00000000005b7789 in cli_frontend::execute (this=this@entry=0x7fffffffd800, argc=argc@entry=3, argv=argv@entry=0x7fffffffdc98) at ../../../../../src/frontend/mame/clifront.cpp:282
#17 0x0000000000549e6d in emulator_info::start_frontend (options=..., osd=..., argc=argc@entry=3, argv=argv@entry=0x7fffffffdc98) at ../../../../../src/frontend/mame/mame.cpp:325
#18 0x0000000000437466 in main (argc=3, argv=0x7fffffffdc98) at ../../../../../src/osd/sdl/sdlmain.cpp:214
再現手順1. Start MAME with a translation loaded with no machine, e.g. ./mametiny64 -language Italian
2. Tab to bottom pane of UI, select "Configura Opzioni" (first item) and press return/enter
3. Select "Personalizza UI" (first item after the separator) and press return/enter
4. Select "Lingua" (third item) and press return/enter
5. If you're lucky, MAME will crash, if not keep going
6. Select "Ukrainian" and press return/enter
7. Press escape twice to reload the main menu with the new options
8. Tab to bottom pane of UI, select "Configure Options" (first item) and press return/enter
9. Select "Customize UI" (first item after the separator) and press return/enter
10. Select "Language" (third item) and press return/enter
11. MAME should definitely crash this time if it didn't already at step 5
追加情報 
 
添付ファイル