libretro / RetroArch

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

Retroarch hangs on closing content #7948

Open Lynnesbian opened 5 years ago

Lynnesbian commented 5 years ago

Description

When closing content with retroarch, the process hangs. The only was to end the process is with SIGKILL.

Expected behavior

The retroarch menu returns.

Actual behavior

The program hangs, requiring SIGKILL. This happens with both xmb and rgui menu drivers.

Steps to reproduce the bug

  1. Load content
  2. Open the menu
  3. Close content

Bisect Results

This issue has persisted ever since I installed retroarch on my computer. I've used previous versions and not had this issue, and this issue doesn't happen on other computers with the same version.

Version/Commit

You can find this information under Information/System Information

Environment information

GDB output

https://pastebin.com/d567b9m1

Video

https://lynnesbian.space/res/ceres/Peek_2019-01-09_18-22.mp4

strace

warning -- 13MiB of text

orbea commented 5 years ago

Can you share a --verbose log?

Ferk commented 5 years ago

Which core are you using? Does it happen with every core? This is a known issue with, for example, scummvm (https://github.com/libretro/scummvm/issues/116)

Lynnesbian commented 5 years ago

Can you share a --verbose log?

Sure! https://pastebin.com/fwYAvupf

Which core are you using? Does it happen with every core?

It happens with:

These are all the cores I tested, so it's likely that it happens with every core.

orbea commented 5 years ago

I don't see anything obvious in the verbose log and the gdb log is incomplete unfortunately.

Here are three ways you may be able to narrow this down more.

hhromic commented 5 years ago

Which core are you using? Does it happen with every core? This is a known issue with, for example, scummvm (libretro/scummvm#116)

In the case of the ScummVM core, the freezing issue is completely related to the core itself, not RetroArch. There is a race condition that prevents an exit loop to finish. RetroArch doesn't freeze itself but endlessly waits for the core (which is the one never exiting) to cleanly exit.