Hi Dave,
Your patches looks good for me.
Thank you for avoiding pointless options for the hypervisor
analysis.
Thanks.
Itsuro Oda
Dave Anderson said:
I suppose it should also require an error-catcher if you actually try to
set some bogus "context" value:
@@ -2144,6 +2153,8 @@ cmd_set(void)
"on" : "off");
return;
+ } else if (XEN_HYPER_MODE()) {
+ error(FATAL, "invalid argument for the Xen
hypervisor\n");
} else if (runtime) {
ulong pid, task;
to change the behavior from this:
crash> set 1
set: invalid task or pid value: 1
crash
to this:
crash> set 1
set: invalid argument for the Xen hypervisor
crash>
Dave
Dave Anderson wrote:
>
> Cai Quan bumped into another problem when running against the xen
> hypervisor,
> where entering the "set" command alone with no arguments generates a
> SIGSEGV.
>
> I also note that "set -c #" and "set -p" options make no sense
either:
>
> # crash --xen_phys_start 3ee00000 xen-syms-2.6.18-92.el5 vmcore
>
> crash 4.0-7.2
> Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Red Hat, Inc.
> Copyright (C) 2004, 2005, 2006 IBM Corporation
> Copyright (C) 1999-2006 Hewlett-Packard Co
> Copyright (C) 2005, 2006 Fujitsu Limited
> Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
> Copyright (C) 2005 NEC Corporation
> Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
> Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
> This program is free software, covered by the GNU General Public
> License,
> and you are welcome to change it and/or distribute copies of it under
> certain conditions. Enter "help copying" to see the conditions.
> This program has absolutely no warranty. Enter "help warranty" for
> details.
>
> GNU gdb 6.1
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and
> you are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for
> details.
> This GDB was configured as "x86_64-unknown-linux-gnu"...
>
> KERNEL: xen-syms-2.6.18-92.el5
> DEBUGINFO: ./xen-syms-2.6.18-92.el5.debug
> DUMPFILE: vmcore
> CPUS: 2
> DOMAINS: 4
> UPTIME: 00:34:18
> MACHINE: Intel(R) Pentium(R) 4 CPU 3.40GHz (3400 Mhz)
> MEMORY: 1 GB
> PCPU-ID: 1
> PCPU: ffff83003f05ff28
> VCPU-ID: 1
> VCPU: ffff83003eef6080 (VCPU_RUNNING)
> DOMAIN-ID: 0
> DOMAIN: ffff83003eef8080 (DOMAIN_RUNNING)
> STATE: CRASH
>
> crash> set -c 0
> set: invalid cpu number: system has only 0 cpu
> crash> set -p
> set: no panic task found!
> crash> set
> Segmentation fault
>
> #
>
> Admittedly it's a nonsensical usages of "set", since there's no
concept
> of
> a PID "context" in the hypervisor.
>
> The attached patch changes the behavior to:
>
> crash> set -c 0
> set: -c option not supported on this architecture or kernel
> crash> set -p
> set: -p option not supported on this architecture or kernel
> crash> set
> set: requires an option with the Xen hypervisor
> crash>
>
> Itsura, are you OK with the attached patch?
>
> Thanks,
> Dave
>
>
>
> ------------------------------------------------------------------------
>
> --- crash/tools.c.orig
> +++ crash/tools.c
> @@ -1673,6 +1673,9 @@ cmd_set(void)
> switch(c)
> {
> case 'c':
> + if (XEN_HYPER_MODE())
> + option_not_supported(c);
> +
> if (!runtime) {
> error(INFO,
> "cpu setting not allowed from .%src\n",
> @@ -1689,6 +1692,9 @@ cmd_set(void)
> return;
>
> case 'p':
> + if (XEN_HYPER_MODE())
> + option_not_supported(c);
> +
> if (!runtime)
> return;
>
> @@ -1723,7 +1729,10 @@ cmd_set(void)
> }
>
> if (!args[optind]) {
> - if (runtime)
> + if (XEN_HYPER_MODE())
> + error(INFO,
> + "requires an option with the Xen hypervisor\n");
> + else if (runtime)
> show_context(CURRENT_CONTEXT());
> return;
> }
>
>
> ------------------------------------------------------------------------
>
> --
> Crash-utility mailing list
> Crash-utility(a)redhat.com
>
https://www.redhat.com/mailman/listinfo/crash-utility