[Crash-utility] faulty use of 'set' command when running against the xen hypervisor

Itsuro ODA oda at valinux.co.jp
Sun Sep 21 09:34:18 UTC 2008


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


-- 
Itsuro ODA <oda at valinux.co.jp>





More information about the Crash-utility mailing list