Actually I have installed the new Ubuntu 15.04 64bit, and when I'm trying to install Steam on it, there is a problem. In fact I have downloaded the deb package from steam website, installed it and when I start it nothing happens. I tried to start it from terminal and what I've got

$ steam
Running Steam on ubuntu 15.04 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(0_client)
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
  • Are you by chance using a amd architecture? – user402087 Apr 26 '15 at 19:05
  • I have this error on an AMD system with radeon GPU but I'm still on 14.10 - I did update the kernel in aptitude though so I presume the error stems from there. From my update log I've got linux-image-3.16.0-41-generic:amd64 (3.16.0-41.57, automatic) whilst previously I was using Linux 3.16.0-37-generic. – pbhj Jul 6 '15 at 13:25
  • Fix of moving libstdc++.so.6 appears to work. – pbhj Jul 6 '15 at 13:44
  • You can also try solution as posted in askubuntu.com/questions/635851/… that I think is more elegant. – Tahtisilma Jul 16 '15 at 5:46

This was originally a problem with Steam on Ubuntu 15.04/15.10. Steam bundles old libs and are colliding with mesa drivers, that is also why closed drivers aren't seeing this problem. Update: It might also be that you are missing some things. See other mchid's answer.

There is an open bug in Steam's github.

The current workaround is to remove the old lib version, at least until valve fixes the issue in their startup script or something like that.

So enter these folders and do this (ignore the x86_64 if you only have a 32bit system):

cd $HOME/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak
cd $HOME/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak

If you have problem with the directory above then you should try this:

Some people have the .steam/steam/ubuntu12_32, others have only .steam/ubuntu12_32. If you don't have these folders, find the correct location by checking where your steam is looking for the user profile:

$ fgrep config=  /usr/games/steam
config=$HOME/.steam

Use that to find your lib location:

[config value] + /ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
   |
   \-> $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu

It worked for me... but please note that if some game required that old lib from the steam runtime, it may crash (that is why valve should fix this)

Edit 2015-08-22:

As Steam now has a link in the $HOME/.steam/root that always points to the correct Steam install directory, this command should work for everybody and it simpler for a fast fix:

find $HOME/.steam/root/ubuntu12_32/steam-runtime/*/usr/lib/ -name "libstdc++.so.6" -exec mv "{}" "{}.bak" \; -print

Also, please remember that on each steam runtime update, you will probably need to run this.

Edit 2016-02-16:

Also see the mchid reply below, simply doing:

sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386

might be enough to fix this.

Edit 2016-10-23:

For ubuntu 16.10 the command was updated to remove more files that are breaking mesa drivers, so this new command should work:

find $HOME/.steam/root/ubuntu12_32/steam-runtime/*/usr/lib/ \( -name "libstdc++.so.6" -o -name "libgpg-error.so.0"  -o -name "libxcb.so.1" -o -name "libgcc_s.so.1" \) -exec mv "{}" "{}.bak" \; -print

For NVIDIA closed source drivers, see Vincent's reply below.

Edit 2017-01-08:

Probably final edit, the latest steam linux update should fix most, if not all problems! finally! :D

Edit 2017-08-03:

Sadly, returning from vacation found that some recent update again broke steam. So if you get this when starting, just after update download:

process 23148: arguments to dbus_connection_ref() were incorrect, assertion "connection->generation == _dbus_current_generation" failed in file dbus-connection.c line 2688.

and then steam crash, then you are hitting this bug, reported as non-fatal, but it do crash steam on same distros. workaround is this:

ln -s ${HOME}/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libdbus-1.so.3 ${HOME}/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_32/libdbus-1.so.3

good luck

  • 1
    Hi, Not sure whether I'm a lone case, but I just installed the .deb package on my fresh 15.04 install and it works fine. A pity I can't play half the games though... on a count of being Unix. – thenaglecode Jun 19 '15 at 4:25
  • 3
    This is still broken in December? Wow. VALVE SUCKS. – Warren P Dec 23 '15 at 2:39
  • 1
    All this tricks doesn't work in 16.10 – QkiZ Oct 16 '16 at 17:50
  • 1
    I uninstalled version from Steam and installed version from Ubuntu repo and now works. – QkiZ Oct 23 '16 at 17:55
  • 3
    Just a note, on 16.10 your command did not do the trick for me, however, the one found here: askubuntu.com/a/775667 did work. – rjp Nov 4 '16 at 22:35

Fastfix (tested on Ubuntu 15.04)

mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1{,.disable}
mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6{,.disable}
  • 3
    Hmm this looked like it was going to work - it certainly squashed one error message, but it's still saying it can't load swrast - - – rm-vanda May 2 '15 at 3:21
  • 1
    You have to apply this again after each steam update. – bebbo Jan 10 '16 at 20:14
  • again, this doesn't fix the OP error message – mchid Jan 21 '16 at 8:36
  • I was having the same problem as OP on Xenial 16.04 with the same error message, and this worked for me. I needed to run these commands once before launching Steam for the first time, then a second time after Steam's initial update. – Maximillian Laumeister Aug 21 '16 at 20:34

The following is from Error in installing Steam on ubuntu 15.04 and is by far the easiest answer to this question (as noted above by tahtisilma). I would add that if you want to avoid the pain of having to use the command terminal each time, then you can edit the desktop file either on your desktop, by right clicking and selecting properties and then replacing the commmand in the desktop file with the following:

sh -c "LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam"  

Short version:

Start steam in the terminal using:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

instead of just steam

Long version:

Steam can’t open nouveau_dri.so, the shared library responsible for communicating with the graphics driver. To check if the driver is OpenGL enabled run:

DISPLAY=:0 glxinfo | grep -i direct

The output should be:

direct rendering: Yes Running steam in debug mode:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

Gives us the output where the following lines gives us hint:

libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/nouveau_dri.so
libGL: dlopen /usr/lib/i386-linux-gnu/dri/nouveau_dri.so failed     (/home/user/.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/i386-linux-  gnu/dri/nouveau_dri.so))

It seems that steam uses different version of libstdc++.so.6. Lets check which version steam uses:

ls -l ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6  

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

So Steam loaded LibC6 with ABI version 18 where driver expects version 20.The solution is to tell OS to preload the proper LibC6 version using LD_PRELOAD variable:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

The somewhat non-intuitive $LIB parameter gets expanded in ld.so to the right path based on the platform of the process being started (man 8 ld.so for details).

You can create script with the following content to run it instead of steam:

#!/bin/bash
# Export so all child processes are affected as well
  export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
  export DISPLAY=:0
#export LIBGL_DEBUG=verbose
steam

A better script could check if the global LibC6 version is newer than the one in STEAM_RUNTIME and only then LD_PRELOAD’s.

More details can be found on here. Note that I tested it on Debian and now it has been tested on Ubuntu vivid 15.04 and works fine.

  • although the desktop file edit will work, I can not get the main menu (xubuntu) entry desktop file in .local/share/applications/steam.desktop to work unless I create the menu entry using alacarte, and then remove the desktop file steam.desktop in .local/share/applications/steam.desktop and then link to the desktop file from .local/share/applications like so: ln -s ~/Desktop/steam.desktop ~/.local/share/applications/steam.desktop – miller the gorilla Jul 25 '15 at 16:07
  • I had initially moved the files, as some answers above suggested. But it was only with the exports you pointed that I've got steam working on my ubuntu 15.04. Thanks a lot! :D – Rubens Aug 30 '15 at 3:50
  • Where is the heck $LIB variable is being set ? A lot of people mention it, and it's nowhere defined – Sergiy Kolodyazhnyy Jan 15 '17 at 23:02

This works fine for me under Ubuntu 15.04 64bits with proprietary driver NVIDIA version 346 :

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
  • Another fix had worked for me before but I had to re-install my Nvidia drivers after blacklisting my nouveau driver and then steam wouldn't launch so this fixed it this time, hopefully this problem gets fixed by the time Ubuntu 16.04 comes out – resonant7hand Jan 19 '16 at 23:53
  • This should work on any nvidia version (credit : Alan Plum - github.com/ValveSoftware/steam-for-linux/issues/… ): NVIDIA_VERSION=$(nvidia-settings -q NvidiaDriverVersion | grep -oP "[0-9]{3}" | sed -n 1p); export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-$NVIDIA_VERSION:/usr/lib/nvidia-$NVIDIA_VERSION" – higuita Oct 26 '16 at 22:52

This is a simple fix.

According to the error message, you are missing the following files:r600_dri.so and swrast_dri.so

Run the following commands to install these missing files:

sudo apt-get update
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386

The problem should now be solved.

Please post any additional errors.

  • 1
    If any Valve staffers happen along, I have a question; Why doesn't the steam for ubuntu installer script probe the Mesa install and find missing parts and install them for me? – Warren P Jan 21 '16 at 13:57
  • Not solved at all, the libs in question were already at their latest version. – mystrdat Feb 23 '16 at 15:55
  • This fixed it for me. This should be the first thing you try. – matthew_360 Feb 27 '16 at 19:10

Fix for Ubuntu 16.04, Xenial Xerus, 64-bit

I've only had this problem with Steam since upgrading to 16.04, it worked fine on 14.04. I tried all the fixes above for older versions of Ubuntu.

The second part of this solution worked for me.

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install wget gdebi libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libc6:i386
$ wget http://media.steampowered.com/client/installer/steam.deb
$ sudo gdebi steam.deb

Now I'm running L4D2 in Ubuntu again - excellent!

  • If you've already got dpkg, there's no need to install gdebi: sudo dpkg -i ./steam.deb – CSkau Oct 2 '16 at 9:30
  • 1
    gdebi will install dependencies, dpkg won't. – Havok Nov 22 '16 at 11:01

These two lines from menasheh's comment on github issue works with Ubuntu 15.10:

export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0

Note that if Steam updates itself, you may need to enter these lines again.

Just ran into this issue on a fresh install of Ubuntu 18.04 LTS. Turns out the Steam runtime version of libgcc_s.so.1 was the culprit. Renaming the file fixed the issue for me:

$ cd ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/
$ mv libgcc_s.so.1 libgcc_s.so.1.bak

protected by Community Jun 3 '15 at 19:59

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.