lutris / lutris

Lutris desktop client
https://lutris.net
GNU General Public License v3.0
7.92k stars 693 forks source link

Almost all native Linux games need additional directories in LD_LIBRARY_PATH on Solus #754

Closed heldderarbeit closed 6 years ago

heldderarbeit commented 6 years ago

For example,

A clean install of Hotline Miami can not start:

./hotline_launcher: symbol lookup error: /usr/lib32/libXrandr.so.2: undefined symbol: _XEatDataWords

After i add the /usr/lib32/ directory, it works.

screenshot from 2018-02-07 14-10-15

Another example: Outlast

Running Outlast

appError called: 
Error: Invalid window

Error: Invalid window

Exiting due to error
support/gog_com.shlib: line 94:  9088 Aborted                 ./"${bin_64}"

Here the /usr/lib64/ directory is needed. (/usr/lib32/ doesn't work here).

screenshot from 2018-02-07 14-20-23

Starting Blocks That Matter like it was installed:

Running Blocks That Matter
org.lwjgl.LWJGLException: Could not choose GLX13 config
    at org.lwjgl.opengl.LinuxDisplayPeerInfo.initDefaultPeerInfo(Native Method)
    at org.lwjgl.opengl.LinuxDisplayPeerInfo.<init>(LinuxDisplayPeerInfo.java:61)

and Rogue Legacy:

Running Rogue Legacy
System.DllNotFoundException: opengl32.dll

Again, /usr/lib32/ respectively /usr/lib64/ fixes these issues!

However... astonishingly other games such as Torchlight II run just fine out of the box without any tweaks!

Having to add libraries manually for almost every new game - that wouldn't be so bad by itself, but the problem is I can't use any console emulator, because all of them have the option for adding a directory to the LD_LIBRARY_PATH missing (and therefore none of the games i tried would start).

screenshot from 2018-02-07 14-42-38

/home/easygod/.local/share/lutris/runners/retroarch/retroarch: symbol lookup error: /usr/lib/libXv.so.1: undefined symbol: _XEatDataWords

Here is my system for reference:

screenshot from 2018-02-07 14-35-05

ghost commented 6 years ago

This error is also occurring for me on Arch Linux with the game Infinifactory, installed through GOG's native Linux setup. ./infinifactory.x86_64: symbol lookup error: /usr/lib/libXrandr.so.2: undefined symbol: _XEatDataWords

Adding /usr/lib64/ to the LD_LIBRARY_PATH or disabling the Lutris runtime allows the game to run perfectly.

I've posted a draft installer (which is the basic GOG installer) over here, if you want to test it: https://lutris.net/games/install/7535/view

strycore commented 6 years ago

When you're adding /usr/lib32 or /usr/lib64 to LD_LIBRARY_PATH, you're not providing the game with missing libraries, you're overloading the Lutris runtime's libraries with the system one, which happens to work around an issue the runtime had at the time of this report.

Can you please confirm that this error still happen in Solus with the latest runtime downloaded? I made a few changes in the past weeks, notably to get rid of X11 related libraries.

strycore commented 6 years ago

Removed libX11.so from the Steam runtime which fixes Retroarch on Solus and other runners having the XEatDataWords error.