----- Original Message ----- > On 03/10/15 09:49, Dave Anderson wrote: > > > > > > ----- Original Message ----- > >> Hi, > >> > >> for me crash failed to debug xen environments with: > >> > >> crash: invalid structure member offset: domain_is_paused_by_controller > >> FILE: xen_hyper.c LINE: 1255 FUNCTION: > >> xen_hyper_store_domain_context() > >> > >> [/usr/bin/crash] error trace: 546170 => 545bc9 => 545a81 => 510fd0 > >> > >> 510fd0: OFFSET_verify+224 > >> 545a81: xen_hyper_store_domain_context+1265 > >> 545bc9: xen_hyper_refresh_domain_context_space+153 > >> 546170: xen_hyper_domain_init+864 > >> > >> The problem is a change of an item in struct domain in xen version 4.2 > > This is not 100% correct. The versions are: > > 4.2.5, 4.3.3, 4.4.1, 4.5.0 By that you mean "4.2.5 and later", correct? Dave > > >> I tried to fix the problem for me so I can debug the old and the newer > >> xen versions. I'm not sure this was the right way to fix this. > >> Thanks. > >> > >> Dietmar. > > > > Your patch looks reasonable. I have two *very* minor nits: > > > > (1) Put the new domain_controller_pause_count at the end of the > > xen_hyper_offset_table. > > In the fairly unlikely event that somebody has an extension module for > > xen > > debugging, it will break unless recompiled. > > (2) In xen_hyper_dump_xen_hyper_offset_table(), display both the old and > > new offsets. > > That fact that one or the other shows -1 would be more helpful than not > > showing it. > > > > I will 2nd the output of both. > -Don Slutz > > > Note that these suggestions apply to the mainline offset[] table and the > > dump_offset_table() > > function. > > > > Thanks, > > Dave > > > > > >> > >> 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-10 13:57:48.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"); > >> + /* > >> + * In Xen 4.2 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,9 +1274,15 @@ 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))) { > >> dc->domain_flags |= XEN_HYPER_DOMS_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-10 13:52:37.000000000 +0100 > >> @@ -679,6 +679,7 @@ struct xen_hyper_offset_table { > >> long domain_is_polling; > >> long domain_is_dying; > >> long domain_is_paused_by_controller; > >> + long domain_controller_pause_count; > >> long domain_is_shutting_down; > >> long domain_is_shut_down; > >> long domain_vcpu; > >> 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-10 14:00:20.000000000 > >> +0100 > >> @@ -784,8 +784,14 @@ 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)); > >> - XEN_HYPER_PRI(fp, len, "domain_is_paused_by_controller: ", buf, flag, > >> - (buf, "%ld\n", xen_hyper_offset_table.domain_is_paused_by_controller)); > >> + if (XEN_HYPER_VALID_MEMBER(domain_is_paused_by_controller)) { > >> + XEN_HYPER_PRI(fp, len, "domain_is_paused_by_controller: ", buf, flag, > >> + (buf, "%ld\n", > >> xen_hyper_offset_table.domain_is_paused_by_controller)); > >> + } > >> + if (XEN_HYPER_VALID_MEMBER(domain_controller_pause_count)) { > >> + 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 > >> > > > > -- > > Crash-utility mailing list > > Crash-utility@xxxxxxxxxx > > https://www.redhat.com/mailman/listinfo/crash-utility > > > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility