libretro / supafaust

Unsupported SNES emulator for multicore ARM Cortex A7,A9,A15,A53 Linux platforms.
GNU General Public License v2.0
9 stars 12 forks source link

Segfault on start when compiled with gcc 10 #3

Open Sanaki opened 3 years ago

Sanaki commented 3 years ago

Title says it all. Core can load, but segfaults when loading content if compiled with gcc 10. It works just fine when compiled with gcc 9. Tested on Linux x86_64 with gcc 10.1.0.

Sanaki commented 3 years ago

Tested again with both of these with ccache disabled (just to be certain):

(Ubuntu 10.3.0-1ubuntu1~18.04~1)
(Ubuntu 11.1.0-1ubuntu1~18.04.1)

Using SINGLE_CORE=mednafen_supafaust FORCE=YES ./libretro-buildbot-recipe.sh recipes/linux/cores-linux-x64-generic (my usual method) as well as a bare make, same result. After editing the makefile to change DEBUG to 1, it no longer segfaults.

gdb backtrace with stock DEBUG=0:

Thread 1 "retroarch" received signal SIGSEGV, Segmentation fault.
0x00007fffd36e9c5a in MDFN_IEN_SNES_FAUST::PPU_MTRENDER::MTIF_Init(unsigned long) ()
   from /home/ccrowley/src/libretro-super/libretro-mednafen_supafaust/mednafen_supafaust_libretro.so
(gdb) backtrace
#0  0x00007fffd36e9c5a in MDFN_IEN_SNES_FAUST::PPU_MTRENDER::MTIF_Init(unsigned long) () at /home/ccrowley/src/libretro-super/libretro-mednafen_supafaust/mednafen_supafaust_libretro.so
#1  0x00007fffd36e8d2a in MDFN_IEN_SNES_FAUST::PPU_MT::PPU_Init(bool, bool, bool, unsigned long) ()
    at /home/ccrowley/src/libretro-super/libretro-mednafen_supafaust/mednafen_supafaust_libretro.so
#2  0x00007fffd36ebdb8 in MDFN_IEN_SNES_FAUST::Load(Mednafen::GameFile*) () at /home/ccrowley/src/libretro-super/libretro-mednafen_supafaust/mednafen_supafaust_libretro.so
#3  0x00007fffd36e4c66 in Mednafen::MDFNI_LoadGame(char const*, Mednafen::GameFile*) () at /home/ccrowley/src/libretro-super/libretro-mednafen_supafaust/mednafen_supafaust_libretro.so
#4  0x00007fffd36f16f0 in retro_load_game () at /home/ccrowley/src/libretro-super/libretro-mednafen_supafaust/mednafen_supafaust_libretro.so
#5  0x000055555566f4e7 in core_load_game (load_info=0x7fffffff3d70) at retroarch.c:39685
#6  0x0000555555686df2 in content_file_load
    (p_content=0x555556722678 <rarch_st+132696>, content=0x7fffffff4270, content_ctx=0x7fffffff4290, error_enum=0x7fffffff422c, error_string=0x7fffffff4230, special=0x0)
    at tasks/task_content.c:1149
#7  0x000055555568742d in content_file_init
    (content_ctx=0x7fffffff4290, p_content=0x555556722678 <rarch_st+132696>, content=0x7fffffff4270, error_enum=0x7fffffff422c, error_string=0x7fffffff4230) at tasks/task_content.c:1332
#8  0x000055555568a3ee in content_init () at tasks/task_content.c:2809
#9  0x0000555555633947 in event_init_content (settings=0x7ffff7fb0010, p_rarch=0x555556702020 <rarch_st>) at retroarch.c:12496
#10 0x00005555556341bd in command_event_init_core (settings=0x7ffff7fb0010, p_rarch=0x555556702020 <rarch_st>, type=CORE_TYPE_PLAIN) at retroarch.c:12780
#11 0x00005555556374b3 in command_event (cmd=CMD_EVENT_CORE_INIT, data=0x55555674fc20 <rarch_st+318464>) at retroarch.c:14357
#12 0x0000555555667502 in retroarch_main_init (argc=11, argv=0x7fffffff6ad0) at retroarch.c:36035
#13 0x0000555555687bb5 in content_load (info=0x7fffffff6d20, p_content=0x555556722678 <rarch_st+132696>) at tasks/task_content.c:1475
#14 0x00005555556882e9 in command_event_cmd_exec
    (p_content=0x555556722678 <rarch_st+132696>, data=0x7fffffff8fe0 "/home/ccrowley/ROMs/Nintendo - Super Nintendo Entertainment System/Dragon View (USA).7z#Dragon View (USA).sfc", content_ctx=0x7fffffff6dd0, launched_from_cli=false, error_string=0x7fffffff6da0) at tasks/task_content.c:1701
#15 0x0000555555688ae0 in task_push_load_content_from_playlist_from_menu
    (core_path=0x7fffffffafe0 "/home/ccrowley/.config/retroarch/cores/mednafen_supafaust_libretro.so", fullpath=0x7fffffff8fe0 "/home/ccrowley/ROMs/Nintendo - Super Nintendo Entertainment System/Dragon View (USA).7z#Dragon View (USA).sfc", label=0x7fffffff9fe0 "Dragon View (USA)", content_info=0x7fffffff6e60, cb=0x0, user_data=0x0) at tasks/task_content.c:1961
#16 0x000055555593a991 in default_action_ok_load_content_from_playlist_from_menu
    (_path=0x7fffffffafe0 "/home/ccrowley/.config/retroarch/cores/mednafen_supafaust_libretro.so", path=0x7fffffff8fe0 "/home/ccrowley/ROMs/Nintendo - Super Nintendo Entertainment System/Dragon View (USA).7z#Dragon View (USA).sfc", entry_label=0x7fffffff9fe0 "Dragon View (USA)") at menu/cbs/menu_cbs_ok.c:2141
#17 0x000055555593bb7c in action_ok_playlist_entry_collection (path=0x7fffffffc7d8 "Run", label=0x7fffffffc8d7 "collection", type=7, idx=0, entry_idx=0) at menu/cbs/menu_cbs_ok.c:2517
#18 0x000055555561e4cf in generic_menu_entry_action (userdata=0x55555751cea0, entry=0x7fffffffc7c0, i=0, action=MENU_ACTION_OK) at retroarch.c:2573
#19 0x00005555558c9ebe in xmb_menu_entry_action (userdata=0x55555751cea0, entry=0x7fffffffc7c0, i=0, action=MENU_ACTION_OK) at menu/drivers/xmb.c:3964
#20 0x000055555561f346 in menu_entry_action (entry=0x7fffffffc7c0, i=0, action=MENU_ACTION_OK) at retroarch.c:2853
#21 0x000055555561d253 in generic_menu_iterate
    (p_rarch=0x555556702020 <rarch_st>, menu_st=0x55555671c670 <rarch_st+108112>, p_disp=0x5555567248b0 <rarch_st+141456>, p_anim=0x55555671fca8 <rarch_st+121992>, settings=0x7ffff7fb0010, menu=0x55555750ee60, userdata=0x55555751cea0, action=MENU_ACTION_OK, current_time=420865717025) at retroarch.c:2155
#22 0x0000555555622905 in menu_driver_iterate
    (p_rarch=0x555556702020 <rarch_st>, menu_st=0x55555671c670 <rarch_st+108112>, p_disp=0x5555567248b0 <rarch_st+141456>, p_anim=0x55555671fca8 <rarch_st+121992>, settings=0x7ffff7fb0010, action=MENU_ACTION_OK, current_time=420865717025) at retroarch.c:4650
#23 0x000055555566bd61 in runloop_check_state (p_rarch=0x555556702020 <rarch_st>, settings=0x7ffff7fb0010, current_time=420865717025) at retroarch.c:38299
#24 0x000055555566dc77 in runloop_iterate () at retroarch.c:39001
#25 0x0000555555639cab in rarch_main (argc=1, argv=0x7fffffffd858, data=0x0) at retroarch.c:15685
#26 0x00005555558273ae in main(int, char**) (argc=1, argv=0x7fffffffd858) at ui/drivers/ui_qt.cpp:4318

Note: the core path is odd because I symlinked it for quick testing. That doesn't change the results though.

gouchi commented 3 years ago

I reproduce the issue using gcc 11.1.0.

Thread 1 "retroarch" received signal SIGSEGV, Segmentation fault.
0x00007fffe3485b7a in MDFN_IEN_SNES_FAUST::PPU_MTRENDER::MTIF_Init(unsigned long) () from /tmp/supafaust/mednafen_supafaust_libretro.so
(gdb) bt
#0  0x00007fffe3485b7a in MDFN_IEN_SNES_FAUST::PPU_MTRENDER::MTIF_Init(unsigned long) () at /tmp/supafaust/mednafen_supafaust_libretro.so
#1  0x00007fffe3484c4a in MDFN_IEN_SNES_FAUST::PPU_MT::PPU_Init(bool, bool, bool, unsigned long) () at /tmp/supafaust/mednafen_supafaust_libretro.so
#2  0x00007fffe3487cd8 in MDFN_IEN_SNES_FAUST::Load(Mednafen::GameFile*) () at /tmp/supafaust/mednafen_supafaust_libretro.so
#3  0x00007fffe3480b86 in Mednafen::MDFNI_LoadGame(char const*, Mednafen::GameFile*) () at /tmp/supafaust/mednafen_supafaust_libretro.so
#4  0x00007fffe348d60a in retro_load_game () at /tmp/supafaust/mednafen_supafaust_libretro.so
#5  0x000055555562d5e9 in core_load_game (load_info=0x7fffffffaed0) at retroarch.c:39689
#6  0x0000555555644f83 in content_file_load (p_content=0x555556427f50 <rarch_st+132688>, content=0x7fffffffb3d0, content_ctx=0x7fffffffb3f0, error_enum=0x7fffffffb38c, error_string=0x7fffffffb390, special=0x0)
    at tasks/task_content.c:1149
#7  0x00005555556455c1 in content_file_init (content_ctx=0x7fffffffb3f0, p_content=0x555556427f50 <rarch_st+132688>, content=0x7fffffffb3d0, error_enum=0x7fffffffb38c, error_string=0x7fffffffb390)
    at tasks/task_content.c:1332
#8  0x00005555556485a9 in content_init () at tasks/task_content.c:2809
#9  0x00005555555f14f6 in event_init_content (settings=0x555556572d50, p_rarch=0x555556407900 <rarch_st>) at retroarch.c:12496
#10 0x00005555555f1d81 in command_event_init_core (settings=0x555556572d50, p_rarch=0x555556407900 <rarch_st>, type=CORE_TYPE_PLAIN) at retroarch.c:12780
#11 0x00005555555f5059 in command_event (cmd=CMD_EVENT_CORE_INIT, data=0x5555564554f8 <rarch_st+318456>) at retroarch.c:14357
#12 0x00005555556255c4 in retroarch_main_init (argc=4, argv=0x7fffffffe0e8) at retroarch.c:36039
#13 0x0000555555645d6d in content_load (info=0x7fffffffdfa0, p_content=0x555556427f50 <rarch_st+132688>) at tasks/task_content.c:1475
#14 0x000055555564787a in task_load_content_internal (content_info=0x7fffffffdfa0, loading_from_menu=true, loading_from_cli=true, loading_from_companion_ui=false) at tasks/task_content.c:2342
#15 0x0000555555647b5f in task_push_load_content_from_cli (core_path=0x0, fullpath=0x0, content_info=0x7fffffffdfa0, type=CORE_TYPE_PLAIN, cb=0x0, user_data=0x0) at tasks/task_content.c:2436
#16 0x00005555555f77ef in rarch_main (argc=4, argv=0x7fffffffe0e8, data=0x0) at retroarch.c:15664
#17 0x00005555555f7882 in main (argc=4, argv=0x7fffffffe0e8) at retroarch.c:15762
gouchi commented 2 years ago

I made a test with gcc version 12.1.0 and it is working.