Ubuntu – Steam not working with open source drivers

atidriverssteam

I have been on quite the odyssey trying to get steam to work.

I am using Ubuntu 15.04 and the linux 4.0.5 kernel. System specs:

Intel haswell quad core CPU
AMD Radeon 7870 Graphics
Samsung 850 EVO SSD
16GB Memory

I was able to get steam to work in 14.04LTS, but I had other problems with that version; namely flash issues in chrome. So I updated to 15.04 and my system is more stable (except for steam, there is always something…)

I have tried removing various lib files to no effect. I have removed and installed steam a few times and it doesn't appear to be working.

I tried switching to the proprietary drivers, but that causes my system to hang when it boots. In order to fix it I completely removed and purged fglrx from my system. I attempted to reinstall the proprietary drivers via command line according the ubuntu page instructions, and ran into the same error, so I am stuck with the open source drivers.

I can only assume that my card is no longer supported by the proprietary drivers, which is frustrating.

Before I removed the proprietary drivers I got the same error as these guys:
https://github.com/ValveSoftware/steam-for-linux/issues/3820

Now that I have removed the proprietary drivers I am getting missing lib errors, which I guess is not surprising:

libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

I am about ready to give up and am seriously considering buying an Nvidia card. If anybody has any suggestions on what else I can do, I would really appreciate it.

Best Answer

This problem is caused by the Steam's old bundled version of libstdc++.

Possible solutions:

  1. (from https://github.com/ValveSoftware/steam-for-linux/issues/3273) Redirect steam runtime's symlink for libstdc++.so.6 to the systems. Replace XX with the version of your system's libstdc++. You need to update this when libstdc++ is updated.

    $ ln -sf /usr/lib/libstdc++.so.6.0.XX ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
    
  2. (from http://chapeaulinux.org/forums/topic/steam-not-working-in-chapeau-22/) Preload the system's libstdc++ before running steam.

    $ LD_PRELOAD=/usr/lib/libstdc++.so.6 ; steam
    

    The last solution can also be put in a script:

    sudo mv /usr/bin/steam /usr/bin/steam.orig
    echo -e '#!/bin/sh\nexport LD_PRELOAD=/usr/lib/libstdc++.so.6\n. /usr/bin/steam.orig $*'>~/mysteam
    chmod +x ~/mysteam
    sudo ln -s ~/mysteam /usr/bin/steam
    
  3. (from search for how-to-fix-broken-steam-linux-client-with-radeon-graphics-driver-workaround/) Create a script to run steam with the system's version of libstdc++.

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

    Save this as e.g. run-steam.sh. You must start steam through this script.

Related Question