[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Help with Guest creation problem



This problem is a bit out of the mainstream as it relates to guests that terminate quickly, which the typical OS guest does not do, but my Java guest applications sometimes do.

The problem manifests itself as the behavior below. I believe that the cause is some race between the guest terminating, console output and the xm code. I'm no Python expert but it doesn't look as if the error handling in do_console is working correctly. Note that if the guest is made to sleep for a second before terminating, this behavior never happens.

I've experienced this occasionally on Solaris xVM and very frequently on various flavors of Xen/Linux.

Any insight appreciated.

Mick

# xm create -c xmconfigs/domain_config_generic extra= -XX:SemiSpaceGC:Virtual -cp /guestvm/image/GuestVM/bin test.java.lang.Null name=GuestVM-test.java.lang.Null-mjj
Unexpected error: <type 'exceptions.OSError'>

Please report to xen-devel@xxxxxxxxxxxxxxxxxxx
Traceback (most recent call last):
 File "/usr/sbin/xm", line 10, in <module>
   main.main(sys.argv)
File "/usr/lib64/python2.5/site-packages/xen/xm/main.py", line 2500, in main
   _, rc = _run_cmd(cmd, cmd_name, args)
File "/usr/lib64/python2.5/site-packages/xen/xm/main.py", line 2524, in _run_cmd
   return True, cmd(args)
 File "<string>", line 1, in <lambda>
File "/usr/lib64/python2.5/site-packages/xen/xm/main.py", line 1302, in xm_importcommand
   cmd.main([command] + args)
File "/usr/lib64/python2.5/site-packages/xen/xm/create.py", line 1293, in main
   do_console(sxp.child_value(config, 'name', -1))
File "/usr/lib64/python2.5/site-packages/xen/xm/create.py", line 1318, in do_console
   (p, rv) = os.waitpid(cpid, os.WNOHANG)
OSError: [Errno 10] No child processes
[root@diy-3-15 GuestVMNative]#

create.py:

def do_console(domain_name):
   cpid = os.fork()
   if cpid != 0:
       for i in range(10):
           # Catch failure of the create process
           time.sleep(1)
           (p, rv) = os.waitpid(cpid, os.WNOHANG)
           if os.WIFEXITED(rv):
               if os.WEXITSTATUS(rv) != 0:
                   sys.exit(os.WEXITSTATUS(rv))
           try:
               # Acquire the console of the created dom
               if serverType == SERVER_XEN_API:
                   domid = server.xenapi.VM.get_domid(
                              get_single_vm(domain_name))
               else:
                   dom = server.xend.domain(domain_name)
                   domid = int(sxp.child_value(dom, 'domid', '-1'))
               console.execConsole(domid)
           except:
               pass
       print("Could not start console\n");
       sys.exit(0)


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.