Processors can be marked as offline. In that case, they will not be reported by /proc/cpuinfo . However, the processor ID in /proc/stat will account for the missing processor. In that case, we end up trying to perform an out of bounds read on the vector of CPU objects.
To account for missing processors, store the CPU objects in a hash rather than a vector so that we can store them based on the actual processor ID. In addition, rework the naming so we report a more proper core name if cores are offline.