RetroPie / EmulationStation

A Fork of Emulation Station for RetroPie. Emulation Station is a flexible emulator front-end supporting keyboardless navigation and custom system themes.
Other
858 stars 343 forks source link

Segfault due to missing resources after PR #367 #595

Open LiSongMWO opened 5 years ago

LiSongMWO commented 5 years ago

Fresh install of ES from source (stable branch, commit 72b8644) segfaults immediately.

I did a git bisect between tag: v2.7.6 as good and stable (commit 72b8644) as bad.

The bisect resulted in the culprit commit: 1a4d13b6b39256b1b01f13ead2e653f0bfd7d3ea which was the push for PR #367.

After make install I see no resources folder in /usr/local/bin where my emulationstation binary is, I see no resources folder created in ~/.emulationstation/ after attempting to launch.

Manually copying the data/resources directory from the source tree to .emulationstation/resources fixes the segfault.

As an addendum on the discussion in the PR: I believe that /usr/local/share/emulationstation/resources should be the correct location of any resources when building from source (for the same reason that /usr/local/bin is the default install target for the binary). It's up to the package maintainer to set the install prefix to /usr/ instead of /usr/local/ for distribution packages. However the install prefix should be passed to configure.h or equivalent to provide the lookup path of the resource files to the binary so that they are correctly found depending on how the installation prefix is configured in cmak. Having ~/.emulationstation/resources/ as an override makes sense, but storing the resources alongside the binary in /usr/bin/ or /usr/local/bin is against unix practices. Equally they should not be stored in /etc/emulationstation as was discussed in the PR as /etc/ is reserved for configuration, not graphical resources. Looking up the resources on the current working directory is also a bit confusing, I would rather pass a flag.

jrassa commented 5 years ago

This has been discussed before (#427 and others). The gist of it is that RetroPie does not use make install so it hasn't been a priority to make it work when doing so. We are open to accepting PRs.

LiSongMWO commented 5 years ago

I can make a patch.

But before I do that, I need to know if you will accept it how I plan to implement it:

The binary would try:

  1. ~/. emulationstation/resources
  2. ${cwd}/resources
  3. ${install_prefix}/share/emulationstation/resources

    in that order. This allows user config to override defaults, running from in-tree with new resources with another install already on the system, running on Windows and a standard install on Linux.

Then make install would install to ${install_prefix}/share/emulationstation/resources. I don't know how this works on Windows tho.

This shouldn't break the retro pie setup script to my understanding. I'm not sure what it does exactly but if it puts resources in /usr/bin or similar I recommend that you use make install instead.

On Mon, 26 Aug 2019, 01:58 John Rassa, notifications@github.com wrote:

This has been discussed before (#427 https://github.com/RetroPie/EmulationStation/issues/427 and others). The gist of it is that RetroPie does not use make install so it hasn't been a priority to make it work when doing so. We are open to accepting PRs.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/RetroPie/EmulationStation/issues/595?email_source=notifications&email_token=ABIPUMOBSZ764QAGSXUDIILQGMMEDA5CNFSM4IPKGLKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5C6RNA#issuecomment-524675252, or mute the thread https://github.com/notifications/unsubscribe-auth/ABIPUMNUXHQTVHUH5DB7AKDQGMMEDANCNFSM4IPKGLKA .

GvMariani commented 3 years ago

Given that the issue at hand is preventing the packaging of EmulationStation in my distribution, I come up with this little patch to teach it how to look in /usr/share/emulationstation on Linux (build and run tested): emulationstation-2.9.4-use-datadir-for-resources.txt

It would be better if the place where to search for the resources was configurable at build time or by passing a command line option at runtime, IMO...

Ronbinn commented 3 years ago

Given that the issue at hand is preventing the packaging of EmulationStation in my distribution, I come up with this little patch to teach it how to look in /usr/share/emulationstation on Linux (build and run tested): emulationstation-2.9.4-use-datadir-for-resources.txt

It would be better if the place where to search for the resources was configurable at build time or by passing a command line option at runtime, IMO...

Thanks to your patch I was able to create a deb package. Great job!

ViperAcidZX commented 2 years ago

I'm having some segfault problems with the recent versions of EmulationStation that is constantly causing it to crash with pretty much any theme that isn't "carbon". Can somebody please fix this?

pjft commented 2 years ago

@ViperAcidZX need a lot more details than that, apologies.

Can you please report it in the forums and provide the required details - OS version, hardware, RetroPie version, ES version, ES log, etc?

ViperAcidZX commented 2 years ago

@ViperAcidZX need a lot more details than that, apologies.

Can you please report it in the forums and provide the required details - OS version, hardware, RetroPie version, ES version, ES log, etc?

Sent.