This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] [PATCH] fix error handler index in xm

To: Christian.Limpach@xxxxxxxxxxxx
Subject: Re: [Xen-devel] [PATCH] fix error handler index in xm
From: Dan Smith <danms@xxxxxxxxxx>
Date: Wed, 24 Aug 2005 10:07:22 -0700
Cc: "List: Xen Developers" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 24 Aug 2005 17:05:54 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <m3r7ckpfyp.fsf@xxxxxxxxxxxxxxxxxxxxxxxx> <3d8eece205082408487c9e6812@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.4 (gnu/linux)
CL> I've reverted this check-in because with the change applied, the
CL> error messages are incorrect: 

Ok, so the problem is rooted in the way the args list is manipulated
in the subcommand handlers.  As it stands now (without the patch),
some commands give a good error message, while others dump a stack
trace if the domain doesn't exist:

  # xm destroy foo
  Error: Domain 'foo' not found when running 'xm destroy'
  # xm domid foo
  Traceback (most recent call last):
    File "/usr/sbin/xm", line 10, in ?
    File "/usr/lib/python/xen/xm/main.py", line 671, in main
      handle_xend_error(argv[1], args[1], ex)
  IndexError: list index out of range

This is because destroy adds "bogus" into the args list at index 0,
but domid does not.  I've attached a new patch that checks for this
condition, and removes the "bogus" entry from the list if the
subcommand added it.  This makes the call to handle_xend_error() work
in both situations:

  # xm destroy foo
  Error: Domain 'foo' not found when running 'xm destroy'
  # xm domid foo
  Error: Domain 'foo' not found when running 'xm domid'

Is that an acceptable solution for now?  Perhaps a cleanup of the
inconsistent subcommand handler behavior is in order.  I can do that
when I start work on the remaining interface changes.

diff -r b74c15e4dd4f tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Wed Aug 24 16:15:42 2005
+++ b/tools/python/xen/xm/main.py       Wed Aug 24 09:36:32 2005
@@ -665,8 +665,10 @@
             err("Most commands need root access.  Please try again as root")
         except XendError, ex:
+            if args[0] == "bogus":
+                args.remove("bogus")
             if len(args) > 0:
-                handle_xend_error(argv[1], args[1], ex)
+                handle_xend_error(argv[1], args[0], ex)
                 print "Unexpected error:", sys.exc_info()[0]
Dan Smith
IBM Linux Technology Center
Open Hypervisor Team
email: danms@xxxxxxxxxx
Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>