The smell of a new The GNU C Library (glibc) release … it’s the smell of software compatibility issues! This time, as so many times before, it has badly affected proprietary games released for Linux. The glibc mentality of “let’s just recompile all the things so they work with our library” doesn’t work for software that isn’t released in source format. Here is how you work around a problem that causes all games using the Unity Engine to stall on a black screen after launch.

glibc is a library used in almost all programs and among other things contain functions for working with multi-threaded programs, files, and memory management. In version 2.25, a change to the thread-local storage (TLS) model in glibc caused an incompatibility with the Unity 3D game engine. —or actually, the issue looks to be with Mono, a library from cross-platform .Net development, as distributed with many Unity games for Linux. I’m not entirely sure exactly what broke and where, but I do know how you can work around the problem.

Version 2.25 of glibc is currently shipping in Arch Linux, Fedora 26, and openSUSE tumbleweed.

Update ( 2017-08 ): This issue will be fixed in glibc version 2.26. Some distributions, like Fedora, have backported the fix to their 2.25 packages (2.25-7 on Fedora).

Affected games The bug affects 64-bit games built on the Unity Engine 5.6 and older with glibc version 2.25 on a 64-bit operating system. 32-bit games running on a 64-bit operating system aren’t affected. Affected games get stuck on a black screen. The mouse cursor is visible, often skinned by the game, but you can’t do much more than play cat and mouse with the cursor. Here is an incomplete list of affected games: Besiege

Cities Skylines

Enter the Gungeon

Firewatch

Gone Home

Hatoful Boyfriend

Mini Metro

RimWorld

Robocraft

Superhot