Hello,
I am also hitting this issue. On Ubuntu and I am pretty sure on a Windows computer too, but I cannot confirm it now.
(By the way there are at least two other threads related to this issue: this one and this one.)
Here is a gdb session with a recent source which I got from svn.
It indicates logicalPerPackage is 109 (correct according to the bitfield found in regs.ebx).
Thread 1 "pyrogenesis" hit Breakpoint 1, topology::MaxLogicalPerCore ()
at ../../../source/lib/sysdep/arch/x86_x64/topology.cpp:105
105 ENSURE(logicalPerPackage % maxCoresPerPackage == 0);
(gdb) list
100 if(!x86_x64::cpuid(®s))
101 DEBUG_WARN_ERR(ERR::CPU_FEATURE_MISSING);
102 const size_t logicalPerPackage = bits(regs.ebx, 16, 23);
103 const size_t maxCoresPerPackage = MaxCoresPerPackage();
104 // cores ought to be uniform WRT # logical processors
105 ENSURE(logicalPerPackage % maxCoresPerPackage == 0);
106 const size_t maxLogicalPerCore = logicalPerPackage / maxCoresPerPackage;
107 return maxLogicalPerCore;
108 }
109 else
(gdb) print regs.ebx
$1 = 141385728
(gdb) print /x regs.ebx
$2 = 0x86d6000
(gdb) print /x logicalPerPackage
$3 = 0x6d
...
(gdb) print /x maxCoresPerPackage
$5 = <optimized out>
maxCoresPerPackage is optimized out but when adding a print statement it says 2.
I attach /proc/cpuinfo because I thought it might help you. I am sorry I didn't find the various information you need in general (compiler version, whatever). Please let me know if there is anything I could do. Especially I assume it is not easy to reproduce the issue on your side if it occurs only on certain CPUs (?), if you guys need me to test a patch or
collect more information please ask and I'll do.
Many thanks for this great and beautiful game, me and my kids like it a lot.
cpuinfo