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

[Xen-changelog] [xen-unstable] [TOOLS][PVFB] Avoid zombie framebuffer backends.



# HG changeset patch
# User Steven Smith <ssmith@xxxxxxxxxxxxx>
# Node ID b22274d1311c3f59bc9ddf4cab1a94b368aa8748
# Parent  fb0a586854c1d8a7b814a4b0d77388ee05bb5fe3
[TOOLS][PVFB] Avoid zombie framebuffer backends.

Signed-off-by: Steven Smith <sos22@xxxxxxxxx>
---
 tools/python/xen/xend/server/vfbif.py |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff -r fb0a586854c1 -r b22274d1311c tools/python/xen/xend/server/vfbif.py
--- a/tools/python/xen/xend/server/vfbif.py     Fri Dec 01 12:09:10 2006 +0000
+++ b/tools/python/xen/xend/server/vfbif.py     Fri Dec 01 12:20:12 2006 +0000
@@ -4,6 +4,14 @@ import xen.xend
 import xen.xend
 import os
 
+def spawn_detached(path, args, env):
+    p = os.fork()
+    if p == 0:
+        os.spawnve(os.P_NOWAIT, path, args, env)
+        os._exit(0)
+    else:
+        os.waitpid(p, 0)
+        
 class VfbifController(DevController):
     """Virtual frame buffer controller. Handles all vfb devices for a domain.
     """
@@ -33,7 +41,7 @@ class VfbifController(DevController):
             vnclisten = config.get("vnclisten",
                                    
xen.xend.XendRoot.instance().get_vnclisten_address())
             args += [ "--listen", vnclisten ]
-            os.spawnve(os.P_NOWAIT, args[0], args + std_args, os.environ)
+            spawn_detached(args[0], args + std_args, os.environ)
         elif t == "sdl":
             args = [xen.util.auxbin.pathTo("xen-sdlfb")]
             env = dict(os.environ)
@@ -41,7 +49,7 @@ class VfbifController(DevController):
                 env['DISPLAY'] = config["display"]
             if config.has_key("xauthority"):
                 env['XAUTHORITY'] = config["xauthority"]
-            os.spawnve(os.P_NOWAIT, args[0], args + std_args, env)
+            spawn_detached(args[0], args + std_args, env)
         else:
             raise VmError('Unknown vfb type %s (%s)' % (t, repr(config)))
 

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


 


Rackspace

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