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 
 
 >> 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