On 03/10/15 10:16, Dave Anderson wrote: > > > ----- 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? Yes. -Don Slutz > > 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 > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility