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
You are right. I didn't look close enough.
>> 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(a)redhat.com
>>
https://www.redhat.com/mailman/listinfo/crash-utility
>>
>
> --
> Crash-utility mailing list
> Crash-utility(a)redhat.com
>
https://www.redhat.com/mailman/listinfo/crash-utility
>
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility