[Crash-utility] Crash problems with Xen

Don Slutz dslutz at verizon.com
Tue Mar 10 15:13:37 UTC 2015


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 at redhat.com
>>>> https://www.redhat.com/mailman/listinfo/crash-utility
>>>>
>>>
>>> --
>>> Crash-utility mailing list
>>> Crash-utility at redhat.com
>>> https://www.redhat.com/mailman/listinfo/crash-utility
>>>
>>
>> --
>> Crash-utility mailing list
>> Crash-utility at redhat.com
>> https://www.redhat.com/mailman/listinfo/crash-utility
>>
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
> 




More information about the Crash-utility mailing list