As reported by fanjinke51@yeah.net http://mail.openjdk.java.net/pipermail/hotspot-dev/2019-April/037725.html We have: const char* VM_Version_Ext::cpu_family_description(void) { int cpu_family_id = extended_cpu_family(); if (is_amd()) { return _family_id_amd[cpu_family_id]; } if (is_intel()) { if (cpu_family_id == CPU_FAMILY_PENTIUMPRO) { return cpu_model_description(); } return _family_id_intel[cpu_family_id]; } if (is_hygon()) { return "Dhyana"; } return "Unknown x86"; } which indexes into the _family_id_xx arrays using the value returned by extended_cpu_family(). But there is no check that the index is within range as can happen with newer processes. For example AMD Zen will have an id of decimal 23, but the _family_id_amd array only has 17 entries. We need to add new entries for AMD Zen and ensure no out-of-bound accesses.
|