Hi, with xen version 4.2.5 in struct domain the item is_paused_by_controller got changed to controller_pause_count and hence crash doesn't work on newer xen environments. This patch allows to support older and newer xen versions. Dietmar. diff -pNaur crash-7.1.0-org/xen_hyper.c crash-7.1.0/xen_hyper.c --- crash-7.1.0-org/xen_hyper.c 2015-02-06 19:44:11.000000000 +0100 +++ crash-7.1.0/xen_hyper.c 2015-03-11 12:02:17.000000000 +0100 @@ -218,7 +218,12 @@ xen_hyper_domain_init(void) XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_polling, "domain", "is_polling"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_dying, "domain", "is_dying"); + /* + * With Xen 4.2.5 is_paused_by_controller changed to + * controller_pause_count. + */ XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_paused_by_controller, "domain", "is_paused_by_controller"); + XEN_HYPER_MEMBER_OFFSET_INIT(domain_controller_pause_count, "domain", "controller_pause_count"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_shutting_down, "domain", "is_shutting_down"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_shut_down, "domain", "is_shut_down"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_vcpu, "domain", "vcpu"); @@ -1269,7 +1274,12 @@ xen_hyper_store_domain_context(struct xe *(dp + XEN_HYPER_OFFSET(domain_is_polling))) { dc->domain_flags |= XEN_HYPER_DOMS_polling; } - if (*(dp + XEN_HYPER_OFFSET(domain_is_paused_by_controller))) { + if (XEN_HYPER_VALID_MEMBER(domain_is_paused_by_controller) && + *(dp + XEN_HYPER_OFFSET(domain_is_paused_by_controller))) { + dc->domain_flags |= XEN_HYPER_DOMS_ctrl_pause; + } + if (XEN_HYPER_VALID_MEMBER(domain_controller_pause_count) && + *(dp + XEN_HYPER_OFFSET(domain_controller_pause_count))) { dc->domain_flags |= XEN_HYPER_DOMS_ctrl_pause; } if (*(dp + XEN_HYPER_OFFSET(domain_is_dying))) { diff -pNaur crash-7.1.0-org/xen_hyper_defs.h crash-7.1.0/xen_hyper_defs.h --- crash-7.1.0-org/xen_hyper_defs.h 2015-02-06 19:44:11.000000000 +0100 +++ crash-7.1.0/xen_hyper_defs.h 2015-03-11 12:02:17.000000000 +0100 @@ -678,6 +678,10 @@ struct xen_hyper_offset_table { long domain_debugger_attached; long domain_is_polling; long domain_is_dying; + /* + * This changed from xen-4.2.5 to domain_controller_pause_count. + * See below! + */ long domain_is_paused_by_controller; long domain_is_shutting_down; long domain_is_shut_down; @@ -752,6 +756,8 @@ struct xen_hyper_offset_table { long vcpu_runstate_info_state; long vcpu_runstate_info_state_entry_time; long vcpu_runstate_info_time; + /* domain - changed item see domain_is_paused_by_controller */ + long domain_controller_pause_count; }; /* diff -pNaur crash-7.1.0-org/xen_hyper_dump_tables.c crash-7.1.0/xen_hyper_dump_tables.c --- crash-7.1.0-org/xen_hyper_dump_tables.c 2015-02-06 19:44:11.000000000 +0100 +++ crash-7.1.0/xen_hyper_dump_tables.c 2015-03-11 12:05:59.000000000 +0100 @@ -784,8 +784,11 @@ xen_hyper_dump_xen_hyper_offset_table(ch } XEN_HYPER_PRI(fp, len, "domain_is_dying: ", buf, flag, (buf, "%ld\n", xen_hyper_offset_table.domain_is_dying)); + /* Only one of next both exists but print both, ones value is -1. */ XEN_HYPER_PRI(fp, len, "domain_is_paused_by_controller: ", buf, flag, (buf, "%ld\n", xen_hyper_offset_table.domain_is_paused_by_controller)); + XEN_HYPER_PRI(fp, len, "domain_controller_pause_count: ", buf, flag, + (buf, "%ld\n", xen_hyper_offset_table.domain_controller_pause_count)); XEN_HYPER_PRI(fp, len, "domain_is_shutting_down: ", buf, flag, (buf, "%ld\n", xen_hyper_offset_table.domain_is_shutting_down)); XEN_HYPER_PRI(fp, len, "domain_is_shut_down: ", buf, flag, -- Company details: http://ts.fujitsu.com/imprint.html -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility