protonscr

Steam does not run with nouveau anymore.

steamclosed
ValveSoftware/steam-for-linux#4158 · opened 2015-11-26 by orbea · updated 2015-11-27 · 2 comments · github
Oorbea 2015-11-26 github

For quite a while now I get this whenever I try to start the steam client.

Error: You are missing the following 32-bit libraries, and Steam may not run:
libnvidia-tls.so.340.65
libnvidia-glcore.so.340.65

Additionally if I try to start a game through its binary, I get something like this (Assuming it doesn't complain about the steam-client not being started).

./Shadowrun: error while loading shared libraries: libnvidia-tls.so.340.65: cannot open shared object file: No such file or directory

If I understand it right, Shadowrun does not even require the nvidia libraries, only the steam runtime.

$ readelf -d Shadowrun

Dynamic section at offset 0xf58c28 contains 32 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libGLU.so.1]
 0x00000001 (NEEDED)                     Shared library: [libGL.so.1]
 0x00000001 (NEEDED)                     Shared library: [libX11.so.6]
 0x00000001 (NEEDED)                     Shared library: [libXext.so.6]
 0x00000001 (NEEDED)                     Shared library: [libXcursor.so.1]
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [librt.so.1]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x00000001 (NEEDED)                     Shared library: [ld-linux.so.2]
 0x0000000c (INIT)                       0x8080a90
 0x0000000d (FINI)                       0x8e702dc
 0x00000004 (HASH)                       0x80481cc
 0x6ffffef5 (GNU_HASH)                   0x804d264
 0x00000005 (STRTAB)                     0x805e580
 0x00000006 (SYMTAB)                     0x8052390
 0x0000000a (STRSZ)                      129597 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x8fa1ff4
 0x00000002 (PLTRELSZ)                   3896 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x807fb4c
 0x00000011 (REL)                        0x807f9ec
 0x00000012 (RELSZ)                      352 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffe (VERNEED)                    0x807f7fc
 0x6fffffff (VERNEEDNUM)                 7
 0x6ffffff0 (VERSYM)                     0x807dfbe
 0x00000000 (NULL)                       0x0
$ ldd Shadowrun linux-gate.so.1 (0xf7721000)
    libGLU.so.1 => /usr/lib/libGLU.so.1 (0xf7666000)
    libGL.so.1 => /usr/lib/libGL.so.1 (0xf754e000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xf7406000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xf73ee000)
    libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xf73de000)
    libdl.so.2 => /lib/libdl.so.2 (0xf73d6000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf73b6000)
    librt.so.1 => /lib/librt.so.1 (0xf73a6000)
    libm.so.6 => /lib/libm.so.6 (0xf7356000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xf7336000)
    libc.so.6 => /lib/libc.so.6 (0xf7196000)
    /lib/ld-linux.so.2 (0x56638000)
    libglapi.so.0 => /usr/lib/libglapi.so.0 (0xf7176000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xf716e000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xf7166000)
    libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0xf715e000)
    libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0xf7146000)
    libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0xf713e000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0xf7116000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xf710e000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xf7106000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0xf70f6000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf6f7e000)
    libnvidia-tls.so.340.65 => not found
    libnvidia-glcore.so.340.65 => not found
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0xf6f6e000)

As far as using nouveau goes, nvidia only offers better performance with a few new games and hardware decoding for videos. While nouveau is far more reliable and does things like tty far better so I would really like to continue using nouveau which works great with many of the games I would play like Torchlight 2, Baldur's Gate or Deus ex 1.

TTele42 2015-11-27 github

libnvidia-tls.so.340.65 and libnvidia-glcore.so.340.65 are distinctly from the nvidia proprietary driver, your system gl environment is inconsistent. ldd /usr/lib/libGL.so.1 and see if it's looking for those libraries.

Oorbea 2015-11-27 github

That is good thinking... I used to have the nvidia drivers installed before my previous mobo died and nvidia decided to stop working while nouveau still continued to work for a while longer. It seems that it added libraries not included in /var/log/packages/ so that it never got cleaned up properly...

$ ldd /usr/lib/libGL.so.1
    linux-gate.so.1 (0xf7772000)
    libnvidia-tls.so.340.65 => not found
    libnvidia-glcore.so.340.65 => not found
    libX11.so.6 => /usr/lib/libX11.so.6 (0xf74de000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xf74c6000)
    libc.so.6 => /lib/libc.so.6 (0xf7326000)
    libdl.so.2 => /lib/libdl.so.2 (0xf731e000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0xf72f6000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xf72ee000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xf72e6000)
    /lib/ld-linux.so.2 (0x5657b000)
$ ls -l /usr/lib/libGL.so.1
lrwxrwxrwx 1 root root 15 Nov 18 14:28 /usr/lib/libGL.so.1 -> libGL.so.340.65

Here is a diff of two quick lists I made, libgl1 are libraries in /usr/lib/ and libgl2 are files that match "lib/libGL" owned by packages installed on my system.

--- libgl1      2015-11-26 21:46:10.888381293 -0800
+++ libgl2      2015-11-26 21:48:57.820630487 -0800
@@ -1,22 +1,10 @@
 libGL.la
-libGL.so
-libGL.so.1
 libGL.so.1.2.0
-libGL.so.340.65
 libGLESv1_CM.la
-libGLESv1_CM.so
-libGLESv1_CM.so.1
 libGLESv1_CM.so.1.1.0
 libGLESv2.la
-libGLESv2.so
-libGLESv2.so.2
 libGLESv2.so.2.0.0
-libGLEW.so
-libGLEW.so.1.10
 libGLEW.so.1.10.0
-libGLEWmx.so
-libGLEWmx.so.1.10
 libGLEWmx.so.1.10.0
 libGLU.la
-libGLU.so
-libGLU.so.1
 libGLU.so.1.3.1

Looking this list it seems several packages are owned by mesa and glew, now I already reinstalled mesa several times and everything looks fine with its libraries with ldd. Also I noted that symlinks aren't listed in /var/log/packages/.

$ ldd /usr/lib/libGL.so.1.2.0 
    linux-gate.so.1 (0xf7704000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0xf7616000)
    libglapi.so.0 => /usr/lib/libglapi.so.0 (0xf75f6000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xf75ee000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xf75e6000)
    libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0xf75de000)
    libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0xf75c6000)
    libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0xf75be000)
    libxcb-dri3.so.0 => /usr/lib/libxcb-dri3.so.0 (0xf75b6000)
    libxcb-present.so.0 => /usr/lib/libxcb-present.so.0 (0xf75ae000)
    libxcb-randr.so.0 => /usr/lib/libxcb-randr.so.0 (0xf759e000)
    libxcb-xfixes.so.0 => /usr/lib/libxcb-xfixes.so.0 (0xf7596000)
    libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0xf7586000)
    libxcb-shape.so.0 => /usr/lib/libxcb-shape.so.0 (0xf757e000)
    libxcb-sync.so.1 => /usr/lib/libxcb-sync.so.1 (0xf7576000)
    libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0xf756e000)
    libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0xf7566000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xf754e000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xf7406000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0xf73de000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xf73d6000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xf73ce000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0xf73be000)
    libm.so.6 => /lib/libm.so.6 (0xf736e000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf734e000)
    libdl.so.2 => /lib/libdl.so.2 (0xf7346000)
    libc.so.6 => /lib/libc.so.6 (0xf71a6000)
    /lib/ld-linux.so.2 (0x56630000

However the glew libraries aren't alright...

$ ldd /usr/lib/libGLU.so
    linux-gate.so.1 (0xf7794000)
    libGL.so.1 => /usr/lib/libGL.so.1 (0xf75be000)
    libglapi.so.0 => /usr/lib/libglapi.so.0 (0xf759e000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xf7596000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xf758e000)
    libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0xf7586000)
    libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0xf756e000)
    libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0xf7566000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xf754e000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xf7406000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0xf73de000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xf73d6000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xf73ce000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0xf73be000)
    librt.so.1 => /lib/librt.so.1 (0xf73ae000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf738e000)
    libdl.so.2 => /lib/libdl.so.2 (0xf7386000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf720e000)
    libm.so.6 => /lib/libm.so.6 (0xf71be000)
    libc.so.6 => /lib/libc.so.6 (0xf701e000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xf6ffe000)
    /lib/ld-linux.so.2 (0x5655d000)
    libnvidia-tls.so.340.65 => not found
    libnvidia-glcore.so.340.65 => not found

So I took this opportunity to reinstall glew, both the 64 bit and compat32 packages. However this did not make much difference.

$ grep lib/libGLU.so /var/log/packages/*
/var/log/packages/glu-compat32-9.0.0-x86_64-1compat32:usr/lib/libGLU.so.1.3.1
$ ldd libGLU.so.1.3.1 
    linux-gate.so.1 (0xf7766000)
    libGL.so.1 => /usr/lib/libGL.so.1 (0xf758e000)
    libglapi.so.0 => /usr/lib/libglapi.so.0 (0xf756e000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xf7566000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xf755e000)
    libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0xf7556000)
    libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0xf753e000)
    libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0xf7536000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xf751e000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xf73d6000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0xf73ae000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xf73a6000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xf739e000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0xf738e000)
    librt.so.1 => /lib/librt.so.1 (0xf737e000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf735e000)
    libdl.so.2 => /lib/libdl.so.2 (0xf7356000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf71de000)
    libm.so.6 => /lib/libm.so.6 (0xf718e000)
    libc.so.6 => /lib/libc.so.6 (0xf6fee000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xf6fce000)
    /lib/ld-linux.so.2 (0x5656e000)
    libnvidia-tls.so.340.65 => not found
    libnvidia-glcore.so.340.65 => not found

So now I tried removing libGL.so.1 and libGL.so.340.65 from /usr/lib and then symlinked libGL.so.1 to libGL.so which is in turn symlinked to libGL.so.1.2.0 (Kind of a messy solution...) since the glew libraries still wanted libGL.so.1.

Finally I tried launching the steam client again and now it works once again! Thanks for you helpful pointer! I will now close this issue.

Nothing extracted yet.