CiV crashes on a newer, high-end system
Solution 1:
Possible cause: >8-core bug
Civilization V has a known issue where it assumes that a computer can't have more than 8 CPU cores. This assumption was (mostly) true at the time of its release: only some very expensive server CPUs and dual-socket systems had that many cores1. SMT virtual 'cores' also counts toward this maximum.
If you have a modern, high end processor, these nowadays come with 12, 16, or even more virtual cores, and whenever civilization happens to run on more than 8 of them, it may crash occasionally.
You can fix this by setting the process affinity mask such that Civilization will run only on the first 8 cores. Scroll down to your specific operating system and follow the instructions for it.
Windows
Open the task-manager using Ctrl-alt-del
. Right click the CiV process, and select configure affinity...
. Configure the CiV process to only run on at most 8 cores, and only on the first eight cores in that list.
You can also create a .bat
script to do this for you every time the game starts up. Use the command
start /AFFINITY FF CiV.exe
to start CiV with the affinity mask on the first 8 CPUs. For more information on how masks work, see this question over at SO. Here the values 1, 2, 4, 8, 16, (...) are your CPU cores.
Crazy computers
If for some reason you want to run this game on a crazy powerful computer with say 2 AMD EPYC 7601s (64C/128T) then you'll have to read up on Processor Groups as well.
Linux
For linux; run the following command after starting CiV, where PID
is the process ID it happens to be running at (you can find this out by using top
or a similar command):
taskset -p <PID> 0x000000ff
You can also use your desktop environment's process manager, e.g. KSysGuard or gnome-system-monitor. It's also possible to script this. Replace the startup command for cilivization 5 in its startup .sh script from CiV
(where this is whatever command runs the game) to taskset 0x000000ff CiV
If you system is NUMA (like AMD Threadripper or a Workstation using 2 server-grade CPUs), or has a very large amount of cores (>32), you'll have to use numactl
instead.
numactl --physcpubind=+0-7 CiV
1: There was one exception: The only consumer CPU that did at the time of its release was the Core i7-980X, a $1000 part.