Read only crash notes for onlined CPUs. Crash notes for not running CPUs does not exist in core file. Do not try to read them. Signed-off-by: Daniel Kiper <daniel.kiper at oracle.com> diff -Npru crash-6.0.8.orig/xen_hyper.c crash-6.0.8/xen_hyper.c --- crash-6.0.8.orig/xen_hyper.c 2012-07-05 15:34:45.000000000 +0200 +++ crash-6.0.8/xen_hyper.c 2012-07-05 15:35:05.000000000 +0200 @@ -633,18 +633,18 @@ xen_hyper_dumpinfo_init(void) } /* allocate a context area */ - size = sizeof(struct xen_hyper_dumpinfo_context) * XEN_HYPER_MAX_CPUS(); + size = sizeof(struct xen_hyper_dumpinfo_context) * machdep->get_smp_cpus(); if((xhdit->context_array = malloc(size)) == NULL) { error(FATAL, "cannot malloc dumpinfo table context space.\n"); } BZERO(xhdit->context_array, size); - size = sizeof(struct xen_hyper_dumpinfo_context_xen_core) * XEN_HYPER_MAX_CPUS(); + size = sizeof(struct xen_hyper_dumpinfo_context_xen_core) * machdep->get_smp_cpus(); if((xhdit->context_xen_core_array = malloc(size)) == NULL) { error(FATAL, "cannot malloc dumpinfo table context_xen_core_array space.\n"); } BZERO(xhdit->context_xen_core_array, size); addr = symbol_value("per_cpu__crash_notes"); - for (i = 0; i < XEN_HYPER_MAX_CPUS(); i++) { + for (i = 0; i < machdep->get_smp_cpus(); i++) { ulong addr_notes; addr_notes = xen_hyper_per_cpu(addr, i);