[Crash-utility] Crash problems with Xen
Dave Anderson
anderson at redhat.com
Tue Mar 10 14:16:18 UTC 2015
----- 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 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