Diary and notebook of whatever tech problems are irritating me at the moment.


Workarounds for some game bit-rot on [A-Z]*Ubuntu 14.04

After upgrading to Xubuntu 14.04 x86_64 several games failed to work including Torchlight (from Humble Indie Bundle 6), Doom3, Quake 4, and Aquaria.  I had expected this because bit-rot is a common problem with closed-source games when upgrading.

Aquaria and Doom3 segfaulted.  Quake 4 failed to load textures and its log reported r600_dri.so problems.  These all had the same cause - the libs they included were incompatible with the newer libs being loaded automatically from the OS.  They also had the same solution - rename the included libs. On Quake 4 that included libgcc_s.so.1, libSDL-1.2.id.so.0, and libstdc++.so.6.  To determine where a dynamic binary is getting libraries from use the ldd command but only change those necessary to get it working else other compatibility problems may occur.

Torchlight would load but the cursor had a black box around it and none of the menu buttons could be clicked.  The only way out of it was Alt-F4.  Past experience had taught me that libSDL is a common culprit.  It was using version 2, the same that Ubuntu 12.04/Linux Mint 13 supplied, but the game worked without problems on them.  I suspected that changes to the lib since (or its dependencies) then had created an incompatibility so I simply copied the lib from 12.04 to the 14.04 system and put it in /usr/local/games/Torchlight/lib64.  The game started without problems.

Using different library versions works if they haven't changed much.  The better solution is recompiling the game with newer libraries but getting developers to do that with old closed-source games is difficult.  While fixing library problems is not n00b-friendly, it's trivial compared to what is required for getting old Loki Software games working.

1 comment:

Pedro Mateus said...

Usually, sacking both libgcc_s and libstdc++6 is enough to get most old games working.

Didn't know about the libSDL bit, will have to take Torchlight out for a spin now. Thanks!

About Me

Omnifarious Implementer = I do just about everything. With my usual occupations this means anything an electrical engineer does not feel like doing including PCB design, electronic troubleshooting and repair, part sourcing, inventory control, enclosure machining, label design, PC support, network administration, plant maintenance, janitorial, etc. Non-occupational includes residential plumbing, heating, electrical, farming, automotive and small engine repair. There is plenty more but you get the idea.