libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.17k stars 1.82k forks source link

Core dump when launching game #5468

Closed Ghosthree3 closed 6 years ago

Ghosthree3 commented 7 years ago

Description

RetroArch crashes when starting a game.

Expected behavior

The emulator to start.

Actual behavior

Upon launching a game RetroArch immediately exits with this (abridged) output:

[INFO] Loading content file: <file>
*** Error in `retroarch': double free or corruption (out): 0x00007ffe15b87050 ***
[1]    9294 abort (core dumped)  retroarch

Steps to reproduce the bug

  1. Select a game
  2. Select Run

Bisect Results

I've managed to pin down the exact commit this began happening to 91b1afad0a708ab28fde75273a498ea64abe745c I've also tried using two different emulators (Nestopia UE and bsnes-mercury Balanced) to try and rule out it being the issue.

Environment information

Ghosthree3 commented 6 years ago

This issue seems to still exist in the new 1.7.0 release.

[INFO] Loading content file: <file>
[1]    24667 segmentation fault (core dumped)  retroarch -v --menu

Though the message is slightly different (no double free message and segfault instead of abort), the effect is the same, Retroarch immediately dies upon attempting to play anything.

I had to rollback to 1.6.7 as it's present in 1.6.9 too.

ofry commented 6 years ago

1) Could you test latest nightly version? 2) Could you give stack trace via GDB?

Ghosthree3 commented 6 years ago

Same problem with the current master (didn't see a nightly build). Built with:

cd ~/src
git clone https://github.com/libretro/RetroArch
cd RetroArch
mkdir build
./configure --prefix='/home/ghost/src/RetroArch/build' --disable-jack --disable-oss
make
make -C gfx/video_filters
make install

I assume this is correct, but if I messed up the build let me know.

Issue still present.

Is this what you wanted via GDB? I've not done a stack trace before but I assume backtrace is it.

Starting program: /home/ghost/src/RetroArch/build/bin/retroarch 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffe2ec3700 (LWP 14309)]
[New Thread 0x7fffdb22b700 (LWP 14455)]
[Thread 0x7fffdb22b700 (LWP 14455) exited]
[Thread 0x7fffe2ec3700 (LWP 14309) exited]
[New Thread 0x7fffe2ec3700 (LWP 14528)]

Thread 1 "retroarch" received signal SIGSEGV, Segmentation fault.
0x00007fffef940f93 in free () from /usr/lib/libc.so.6
#0  0x00007fffef940f93 in free () from /usr/lib/libc.so.6
#1  0x000055555588992c in file_archive_parse_file_iterate (userdata=0x0, file_cb=0x0, valid_exts=0x0, file=0x0, returnerr=0x0, state=0x7fffffffa4e0)
    at libretro-common/file/archive_file.c:429
#2  file_archive_parse_file_iterate_stop (state=state@entry=0x7fffffffa4e0) at libretro-common/file/archive_file.c:367
#3  0x00005555558cd490 in zip_file_read (
    path=0x555556fe8130 "/roms/Super Nintendo Entertainment System (No-Intro)/Super Metroid (Japan, USA) (En,Ja).zip", 
    needle=<optimized out>, buf=<optimized out>, optional_outfile=<optimized out>) at libretro-common/file/archive_file_zlib.c:275
#4  0x000055555588a271 in file_archive_compressed_read (
    path=path@entry=0x555556febe30 "/roms/Super Nintendo Entertainment System (No-Intro)/Super Metroid (Japan, USA) (En,Ja).zip#Super Metroid (Japan, USA) (En,Ja).sfc", buf=buf@entry=0x7fffffffc6d0, optional_filename=optional_filename@entry=0x0, length=length@entry=0x7fffffffc6c8)
    at libretro-common/file/archive_file.c:755
#5  0x00005555555b25ac in content_file_read (length=0x7fffffffc6c8, buf=0x7fffffffc6d0, 
    path=0x555556febe30 "/roms/Super Nintendo Entertainment System (No-Intro)/Super Metroid (Japan, USA) (En,Ja).zip#Super Metroid (Japan, USA) (En,Ja).sfc") at tasks/task_content.c:149
#6  load_content_into_memory (length=0x7fffffffc6c8, buf=0x555557225938, 
    path=0x555556febe30 "/roms/Super Nintendo Entertainment System (No-Intro)/Super Metroid (Japan, USA) (En,Ja).zip#Super Metroid (Japan, USA) (En,Ja).sfc", i=0, content_ctx=<synthetic pointer>) at tasks/task_content.c:317
#7  content_file_load (additional_path_allocs=0x555556662440, special=0x0, error_string=<synthetic pointer>, content_ctx=<synthetic pointer>, 
    content=0x555556662e60, info=0x555557225930) at tasks/task_content.c:570
#8  content_file_init (error_string=<synthetic pointer>, content=0x555556662e60, content_ctx=<synthetic pointer>) at tasks/task_content.c:790
#9  content_init () at tasks/task_content.c:1806
#10 0x00005555555a4e83 in event_init_content () at command.c:1227
#11 command_event_init_core (data=0x555555d25f04 <current_core_type>) at command.c:1285
#12 command_event (cmd=cmd@entry=CMD_EVENT_CORE_INIT, data=data@entry=0x555555d25f04 <current_core_type>) at command.c:2242
#13 0x000055555559fd6a in retroarch_main_init (argc=11, argv=argv@entry=0x7fffffffc9a0) at retroarch.c:1278
#14 0x00005555555aebf4 in content_load (info=info@entry=0x7fffffffcc50) at tasks/task_content.c:270
#15 0x00005555555aef8f in task_load_content (content_info=content_info@entry=0x7fffffffcc50, content_ctx=content_ctx@entry=0x7fffffffcc70, 
    launched_from_menu=launched_from_menu@entry=true, launched_from_cli=launched_from_cli@entry=false, error_string=error_string@entry=0x7fffffffcc48)
    at tasks/task_content.c:857
#16 0x00005555555b12eb in command_event_cmd_exec (launched_from_cli=false, error_string=0x7fffffffcc48, content_ctx=0x7fffffffcc70, data=<optimized out>)
    at tasks/task_content.c:1001
#17 task_push_load_content_from_playlist_from_menu (
    core_path=core_path@entry=0x7fffffffcd90 "/home/ghost/.config/retroarch/cores/bsnes_mercury_balanced_libretro.so", 
    fullpath=0x555556da6800 "/roms/Super Nintendo Entertainment System (No-Intro)/Super Metroid (Japan, USA) (En,Ja).zip#Super Metroid (Japan, USA) (En,Ja).sfc", label=0x0, content_info=content_info@entry=0x7fffffffcd70, cb=cb@entry=0x0, user_data=user_data@entry=0x0) at tasks/task_content.c:1214
#18 0x000055555569c6ec in default_action_ok_load_content_from_playlist_from_menu (entry_label=<optimized out>, path=<optimized out>, 
    _path=0x7fffffffcd90 "/home/ghost/.config/retroarch/cores/bsnes_mercury_balanced_libretro.so") at menu/cbs/menu_cbs_ok.c:1398
#19 action_ok_playlist_entry_collection (path=<optimized out>, label=<optimized out>, type=<optimized out>, idx=<optimized out>, entry_idx=0)
    at menu/cbs/menu_cbs_ok.c:1577
#20 0x00005555556953be in menu_entry_action (entry=entry@entry=0x7fffffffde40, i=0, action=action@entry=MENU_ACTION_OK) at menu/widgets/menu_entry.c:452
#21 0x00005555556c9740 in generic_menu_iterate (data=0x555556fc0070, userdata=<optimized out>, action=MENU_ACTION_OK) at menu/drivers/menu_generic.c:234
#22 0x000055555568150f in menu_driver_iterate (iterate=iterate@entry=0x7fffffffdee0) at menu/menu_driver.c:1683
#23 0x000055555559c248 in runloop_check_state (settings=settings@entry=0x7ffff7fc7010, input_nonblock_state=input_nonblock_state@entry=false, 
    sleep_ms=0x7fffffffe09c) at retroarch.c:2553
#24 0x00005555555a01a5 in runloop_iterate (sleep_ms=0x7fffffffe09c) at retroarch.c:3072
#25 0x000055555559a010 in rarch_main (argc=<optimized out>, argv=<optimized out>, data=0x0) at frontend/frontend.c:131
#26 0x00007fffef8def4a in __libc_start_main () from /usr/lib/libc.so.6
#27 0x000055555559736a in _start ()

I'm guessing the issue is something to do with reading the archive?

Ghosthree3 commented 6 years ago

This no longer seems to be a problem, games are launching without issue now (1.7.3).

ghost commented 5 years ago

I was playing Pokemon Silver today with the mGBA core (retroarch wii), and when i tried to save state, it crashed. can anyone help??