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