On Tue, Aug 08, 2006 at 08:24:03PM -0500, Hollis Blanchard wrote:
> I'm getting this error when trying to create a domain:
>
> Unexpected error: xmlrpclib.ProtocolError
>
> Please report to xen-devel@xxxxxxxxxxxxxxxxxxx
> Traceback (most recent call last):
> File "/usr/sbin/xm", line 10, in ?
> main.main(sys.argv)
> File "/usr/lib/python/xen/xm/main.py", line 1233, in main
> rc = cmd(args)
> File "<string>", line 1, in <lambda>
> File "/usr/lib/python/xen/xm/main.py", line 598, in xm_subcommand
> cmd.main([command] + args)
> File "/usr/lib/python/xen/xm/create.py", line 1124, in main
> dom = make_domain(opts, config)
> File "/usr/lib/python/xen/xm/create.py", line 931, in make_domain
> raise ex
> xmlrpclib.ProtocolError: <ProtocolError for /RPC2: -1 >
>
> First I would like to propose this patch, which keeps the full traceback
> intact:
> diff -r 0ec0cb99f712 tools/python/xen/xm/create.py
> --- a/tools/python/xen/xm/create.py Tue Aug 08 18:58:53 2006 -0500
> +++ b/tools/python/xen/xm/create.py Tue Aug 08 19:29:25 2006 -0500
> @@ -928,7 +928,7 @@ def make_domain(opts, config):
> import signal
> if vncpid:
> os.kill(vncpid, signal.SIGKILL)
> - raise ex
> + raise
>
> dom = sxp.child_value(dominfo, 'name')
Yes, I'll drop that in.
> Here's the full traceback:
> Unexpected error: xmlrpclib.ProtocolError
>
> Please report to xen-devel@xxxxxxxxxxxxxxxxxxx
> Traceback (most recent call last):
> File "/usr/sbin/xm", line 10, in ?
> main.main(sys.argv)
> File "/usr/lib/python/xen/xm/main.py", line 1233, in main
> rc = cmd(args)
> File "<string>", line 1, in <lambda>
> File "/usr/lib/python/xen/xm/main.py", line 598, in xm_subcommand
> cmd.main([command] + args)
> File "/usr/lib/python/xen/xm/create.py", line 1124, in main
> dom = make_domain(opts, config)
> File "/usr/lib/python/xen/xm/create.py", line 913, in make_domain
> dominfo = server.xend.domain.create(config)
> File "/usr/lib/python2.3/xmlrpclib.py", line 1032, in __call__
> return self.__send(self.__name, args)
> File "/usr/lib/python/xen/util/xmlrpclib2.py", line 121, in __request
> response = xmlrpclib.ServerProxy.__request(self, methodname, params)
> File "/usr/lib/python2.3/xmlrpclib.py", line 1319, in __request
> verbose=self.__verbose
> File "/usr/lib/python/xen/util/xmlrpclib2.py", line 86, in request
> return Transport.request(self, host, '/RPC2', request_body, verbose)
> File "/usr/lib/python2.3/xmlrpclib.py", line 1073, in request
> headers
> xmlrpclib.ProtocolError: <ProtocolError for /RPC2: -1 >
>
> It looks like the problem is that I've done something in C to crash the
> python interpreter for Xend, or at least this message
> in /var/log/xend.log is my only clue:
>
> [2006-08-08 21:14:48 xend 1153] CRITICAL (SrvDaemon:195) Xend died due
> to signal 9! Restarting it.
Yes, you've probably had one thread segfault; after that, the underlying
threading implementation sends SIGKILL to all the other threads, hence the
signal 9 appearing here.
> Could we get a little better error-handling here? I don't know what the
> right way is to detect that the other end of the XMLRPC connection has
> gone away.
I've put a catch into main.py for xmlrpclib.ProtocolError, which at least will
be a bit prettier. In the longer term, we might want to consider some retry
behaviour, but that can come later.
Ewan.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|