A lot of Unity-based games exhibit spurious errors that can be traced down to the mono.dll
binary. There are various crashes, one of the most famous being something about GetThreadContext Failed
or similar.
Oh gee, a mono garbage collector bug? Who would have thought? Mono works so well. . .
To fix the game, you will have to download Unity (the free version is fine), install using the default options (pick 64 bits) and then browse to the installation folder (for x64, the installation directory will be by default at C:\Program Files\Unity
).
You can use Windows search to locate mono.dll
in any sub-folder - the one you need is the one located under the Editor\PlaybackEngines\windowsstandalonesupport\Variations\win32_nondevelopment_mono\Data
directory. You could probably attempt the procedure with the mono.dll
under the win64_nondevelopment_mono
folder - but you most likely want the non-developement version (hence the folder name nondevelopment
) instead of the development version since it will include additional debugging information that will not be useful for playing your game.
The next step is to copy the mono.dll
from the Unity directory and overwrite the mono.dll
in your game folder directory. For instance, for the game Tyranny, distributed by Good old Games (GoG), the mono.dll
you have to overwrite with the one from Unity, is located inside the C:\GOG Games\Tyranny\Tyranny_Data\Mono
folder.
Games known to be affected by this issue are:
including many titles of the Good old Games (GoG) releases that are built using Unity and mono.