Random Source Games Stop Working After Kernel Update
I am a noob of Xubuntu (and Linux) for 2 months, and I have been relying on my brother who is a fluent user of Linux.
I have downloaded and installed the latest kernel update, linux-image-3.16.0-41-generic
, and all of the other stuff that it needed. So after that, a few of my Source games stop working under optirun
. The only games that I have that work are "Double Action: Boogaloo" and "Counter-Strike: Source".
Note: I have all the Counter-Strike games (sans Nexus), GMod and Portal 2.
CS:GO's Error
~/.local/share/Steam/steamapps/common/Counter-Strike Global Offensive$ optirun ./csgo_linux
./csgo_linux: error while loading shared libraries: libtcmalloc_minimal.so.4: cannot open shared object file: No such file or directory
GMod's Error
~/.local/share/Steam/steamapps/common/GarrysMod$ optirun ./hl2_linux
AppFramework : Unable to load module /home/USERNAME/.local/share/Steam/steamapps/common/GarrysMod/bin/filesystem_stdio.so!
Portal 2 throws the same error as CS:GO.
I have bumblebee
and nvidia-349
installed (and all the dependencies). I've installed NVidia drivers via this method, and have installed the 32-bit libraries via this method. Please help!
EDIT: This also happens without optirun
(with Intel integrated graphics).
UPDATE: I ran steam
in the console (not the games themselves) and then ran the games. I saw in most of the logs this:
ERROR: ld.so: object '/home/pistol/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/pistol/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Solution 1:
EDIT:
The Actual Fix
All credit goes to Henrik Johansson who made a great guide here. I'll tell you what to do in short.
For Valve games, go to the executable in your favorite editor and search for
${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
and replace it with
primusrun ${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
(or optirun
, your choice)
This seems to affect all games that utilize a .sh
executable. Other games may be fixed in a similar fashion.
My Explanation
The problem lies within how Steam runs commands. This is a problem I have just recently connected the dots with and now know the answer. It seems as if the ld.so
problem deals with Intel drivers (or so I think). Steam fails to run optirun
/primusrun
correctly (or maybe at all) and thus uses the Intel drivers, which doesn't work.
That which is below is not applicable anymore, as xorg-edgers
is now graphics-drivers
.
Don't listen to what's below this, please.
After multiple search attempts on the internet and after LOTS of trial and error, I can safely conclude that the main problem is the PPA xorg-edgers
. If you have similar problems, you should remove whatever drivers you have from xorg-edgers
and then ppa-purge
it.
If you don't know how to do it, then here's how.
Install ppa-purge
by...
sudo apt-get install ppa-purge
Remove the xorg-edgers
with...
sudo ppa-purge ppa:xorg-edgers/ppa
And finally...
sudo apt-get update