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?

kos
  • 35,891
  • 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 '15 at 06: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 '15 at 08:15

4 Answers4

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.

Organic Marble
  • 23,641
  • 15
  • 70
  • 122
Tahtisilma
  • 771
  • 5
  • 9
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

philfaint
  • 381
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
cat
  • 1,672
Zivit
  • 61
  • Backing up first is a good idea – psukys Jan 24 '16 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 '16 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.

McLeary
  • 141