30
agung@agung-K43SJ:~$ steam
Running Steam on ubuntu 15.04 64-bit

STEAM_RUNTIME is enabled automatically

Installing breakpad exception handler for appid(steam)/version(0)

libGL error: unable to load driver: nouveau_dri.so

libGL error: driver pointer missing

libGL error: failed to load driver: nouveau

libGL error: unable to load driver: swrast_dri.so

libGL error: failed to load driver: swrast

Before that, I also tried installing Steam from Terminal, but it didn't launch after having downloaded the update.

Can anyone help me finding a solution to install Steam?

2
  • Did you make sure your system was completely up to date before trying that? If not try again. Also if you installed any graphics drivers you might want to disable them as steam likes to select its own graphics video drivers.
    – gyropyge
    Jun 13, 2015 at 6:16
  • Did you install any additional drivers ? nouveau, referenced here, is the open source driver for nvidia and is not good at gaming
    – Mark Kirby
    Jun 13, 2015 at 8:15

4 Answers 4

65

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.

5
  • 5
    This solution also works on Ubuntu 16.04 - I had the same error messages and this method (setting LD_PRELOAD) allowed Steam to run correctly. Jun 21, 2016 at 18:56
  • This also works on Linux Mint 18.1
    – Zoey Hewll
    May 23, 2017 at 1:14
  • Doesn't work on Ubuntu Gnome 17.10. Error message remains. pastebin.com/gbSz3WwT The answer from philfaint helped me on my system though. Dec 27, 2017 at 11:30
  • also works on Debian 9.3 (DE Mate)
    – mountpoint
    Mar 14, 2018 at 16:19
  • I tried doing the same, and it crashed anyway on me. Kunbuntu 18.04 LTS. See the gist of the dump at: gist.github.com/flajann2/aa7777926a8cf1347bc11fce17d34e9a May 26, 2018 at 12:01
28

Another solution, that helped me to launch Steam client was found here -

https://wiki.archlinux.org/index.php/Steam/Troubleshooting

I ran this command -

find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" -o -name "libgpg-error.so*" \) -print -delete

and now Steam launch without any additional pre-loads. Hope this will help everyone who has the same issue on Ubuntu 16.04

4
  • 4
    underrated command, this works on Ubuntu 16.10
    – Zeppe
    Dec 24, 2016 at 22:15
  • 1
    Worked on 18.04 LTS
    – Dave
    May 21, 2018 at 1:17
  • This doesn't work for me at all, and see the gist of the dump: gist.github.com/flajann2/3e6dcc3ef391eae76a99208da2536d1f May 26, 2018 at 12:13
  • 1
    Can anyone explain why this works? Seems like deleting .so files should break things. Is this just short circuiting something important?
    – Bratchley
    Jul 26, 2018 at 13:52
6

Maybe the gcc libs in the steam runtime are incompatible with your mesa drivers. Back up your home folder, then try to delete these library files:

rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1
2
  • Backing up first is a good idea
    – psukys
    Jan 24, 2016 at 23:02
  • @PauliusŠukys In principle yes, but you can also just delete the whole folder if something goes wrong and Steam will download it again... just maybe don't keep your games library in there.
    – Nobody
    Jul 25, 2016 at 14:42
4

Apparently this error happens when one try to install Steam in a 64bits Ubuntu 15.04.

I did a fresh Ubuntu 15.04 install in my machine. I also installed the NVIDIA proprietary graphics drivers.

I was getting this error, but after looking carefully I noticed that steam is a 32bits application, so I installed some 32bits libraries and I reinstalled the NVIDIA driver so Steam was able to launch.

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./NVIDIA-Linux-x86_64-352.63.run

Where the last command should be your driver installer.

When the driver installer asks to install 32bits libraries, hit yes.

Not the answer you're looking for? Browse other questions tagged .