rockerbacon / modorganizer2-linux-installer

An easy-to-use Mod Organizer 2 installer for Linux
GNU General Public License v3.0
986 stars 79 forks source link

Symbol lookup error on Intel Mesa libraries #120

Closed rockerbacon closed 4 years ago

rockerbacon commented 4 years ago

Ah, thank you @rockerbacon. Yeah I've reinstalled MO2 by using the latest version of the install script, but the application still won't launch, though the causes are now different (logs).

After noticing this error at the bottom part of the logs:

Z:\home\data4pass\Games\mod-organizer-2\ModOrganizer2\ModOrganizer.exe: symbol lookup error: /lib/x86_64-linux-gnu/libGLX_mesa.so.0: undefined symbol: xcb_dri3_get_supported_modifiers

I googled around, found this and followed comment 4's suggestion by adding /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 to the LD_PRELOAD environment variable (through Configure > System Options). After running MO2 again, that part then changed to:

Z:\home\data4pass\Games\mod-organizer-2\ModOrganizer2\ModOrganizer.exe: symbol lookup error: /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds

From this issue I added another path to the LD_PRELOAD variable and added LIBGL_DRI3_DISABLE=1. So apparently I had to add:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0:/usr/$LIB/libstdc++.so.6
LIBGL_DRI3_DISABLE=1

to the environment variables option. MO2 now runs, but running FalloutNV.exe through MO2 fails (logs), even though I can run New Vegas fine directly from Steam.

I'm not sure if this will help but I'll paste it:

$ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile 
OpenGL core profile version string: 4.2 (Core Profile) Mesa 19.2.8
OpenGL core profile shading language version string: 4.20
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 19.2.8
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 19.2.8
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00

Thank you again.

Originally posted by @data4pass in https://github.com/rockerbacon/lutris-skyrimse-installers/issues/118#issuecomment-660496089

rockerbacon commented 4 years ago

I think the root of the problem lies here:

INTEL-MESA: warning: Ivy Bridge Vulkan support is incomplete

Proton uses DXVK, which uses Vulkan, but it seems your hardware doesn't fully support. The lookup error might just be DXVK trying to use an unsupported functionality.

I believe the easiest way to get it working might be to use WineD3D instead of DXVK:

  1. Right click Mod Organizer 2 in Lutris > Configure;
  2. Add the argument --wined3d;
data4pass commented 4 years ago

The lookup error might just be DXVK trying to use an unsupported functionality.

I thought so, too, but I've tried running FNV directly through Steam with DXVK_HUD=1 %command% and the game ran successfully, with DXVK's overlay showing as expected. If I should only be able to run the game without DXVK, shouldn't the argument fail to work?

Running MO2 with --wined3d does make it able to run FalloutNV.exe, thank you! However, I still need to override the above environment variables, since the symbol lookup errors will still persist without the overrides. The DXVK overlay also (expectedly) does not show when the game is run through MO2.

data4pass commented 4 years ago

So I tried launching MO2 through Steam by setting this line as the launch option (thanks to your comment here):

bash "$HOME/.config/modorganizer2/instances/newvegas/run.sh" && echo %command% >/dev/null

I also have DXVK_HUD=1 enabled on my Proton's user_settings.py file, and interestingly, MO2 runs fine, and it can even launch FalloutNV.exe with the DXVK overlay displayed (which means there is actually no problem launching MO2 with DXVK running even with my specs?). Overriding environment variables or using --wined3d are not needed. Perhaps the problem is somehow caused by Lutris?

rockerbacon commented 4 years ago

If you right click MO2 on Lutris > Configure, there should be an option to disable the Lutris runtime on the System tab. If this option is enabled, there should be no difference between running from Lutris and running from Steam.

We can debug to check for any differences between how Lutris runs the game and how Steam does it.

First we check how Steam is running the game:

  1. Make sure Steam is not running. Open it and click on Steam > Exit in the upper left corner;
  2. Run Steam with Proton debug enabled with this terminal command: PROTON_DUMP_DEBUG_COMMANDS=1 steam
  3. Execute the game from within Steam
  4. Exit the game and exit Steam
  5. A file containing the information we want will be generated in /tmp/proton_${USER}/run. Save it somewhere so it doesn't get overwritten.
  6. Delete everything in /tmp/proton_${USER} so nothing gets mixed with the next debug

Now we do the same, but debugging Lutris:

  1. Right click MO2 on Lutris and add this argument to MO2: -e PROTON_DUMP_DEBUG_COMMANDS=1
  2. Run MO2
  3. Exit MO2 and exit Lutris
  4. Get the contents in /tmp/proton_${USER}/run and save it somewhere

With these two files we will be able to see any differences between how Steam runs the game and how Lutris does it.

rockerbacon commented 4 years ago

@data4pass release 2.8.4 issued a fix related to library paths. It's very likely that this particular problem was fixed, could you help me confirm that?

rockerbacon commented 4 years ago

Closed due to inactivity. The problem is likely to be resolved, if it isn't the issue will be reopened.