Friday, 6 February 2015

Steam client on Gentoo stops with GL errors

I use the Steam client on Gentoo Linux and recently it stopped working which meant I had TF2 withdrawal :-)

I'm not a programmer so this may be a bad way to fix things but it worked for me. YMMV.

It all started when you launch the steam client it brings up a dialog:

OpenGL GLX context is not using direct rendering, which may cause performance problems

TF2 would not even launch :-(

Launching from a terminal gave me

libGL error: unable to load driver: r600_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: r600
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast



After searching through all sorts of things I found an article  about MatLab but with similar errors.

 After doing the:

export LIBGL_DEBUG=verbose

things started to make sense.

libGL: screen 0 does not appear to be DRI3 capable
libGL: pci id for fd 7: 1002:68b8, driver r600
libGL: OpenDriver: trying /usr/lib/dri/tls/r600_dri.so
libGL: OpenDriver: trying /usr/lib/dri/r600_dri.so
libGL: dlopen /usr/lib/dri/r600_dri.so failed (/home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/dri/r600_dri.so))
libGL error: unable to load driver: r600_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: r600
libGL: OpenDriver: trying /usr/lib/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/dri/swrast_dri.so
libGL: dlopen /usr/lib/dri/swrast_dri.so failed (/home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/dri/swrast_dri.so))
libGL error: unable to load driver: swrast_dri.so



The libstdc++ in the Steam directory was

 

ls -al /home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
lrwxrwxrwx 1 nick users 19 Jul 19  2014 /home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.18


but the r600 driver was now built with

ls /usr/lib/gcc/i686-pc-linux-gnu/4.9.2/libstdc++.so.6*
/usr/lib/gcc/i686-pc-linux-gnu/4.9.2/libstdc++.so.6  /usr/lib/gcc/i686-pc-linux-gnu/4.9.2/libstdc++.so.6.0.20


So can you just link the one outside the Steam directory? Delete the link and try..


rm /home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
ln -s /usr/lib/gcc/i686-pc-linux-gnu/4.9.2/libstdc++.so.6.0.20 /home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6



Let's try steam


libGL: screen 0 does not appear to be DRI3 capable
libGL: pci id for fd 7: 1002:68b8, driver r600
libGL: OpenDriver: trying /usr/lib/dri/tls/r600_dri.so
libGL: OpenDriver: trying /usr/lib/dri/r600_dri.so



It says not DRI3 capable but I thoguth it was but no biggie.  No dialog about OpenGL. Getting excited... Launched TF2.  No error straight away and it worked! I was back in Pyro land :-)


Update: I recently made the jump to 64 bit Gentoo and the link command is now different but otherwise it just worked again.

ln -s /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.6 /home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6

A second link is needed to make some games go (such as Outlast) I'm guessing these are 64 bit

ln -s /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.6 /home/nick/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6










Librewolf shows “some of LibreWolf’s security features may offer less protection on your current operating system”

I'm test driving Ubuntu after using Gentoo for years and found Librewolf gave me this warning banner. “some of LibreWolf’s security feat...