Index: lxc/src/lxc/lxccontainer.c
===================================================================
--- lxc.orig/src/lxc/lxccontainer.c	2012-08-24 11:46:43.112003985 -0500
+++ lxc/src/lxc/lxccontainer.c	2012-08-24 12:22:40.683925258 -0500
@@ -244,6 +244,26 @@
 	c->daemonize = 1;
 }
 
+static bool lxcapi_wait(struct lxc_container *c, char *state, int timeout)
+{
+	int ret;
+
+	if (!c)
+		return false;
+
+	ret = lxc_wait(c->name, state, timeout);
+	return ret == 0;
+}
+
+
+static bool wait_on_daemonized_start(struct lxc_container *c)
+{
+	/* we'll probably want to make this timeout configurable? */
+	int timeout = 5;
+
+	return lxcapi_wait(c, "RUNNING", timeout);
+}
+
 /*
  * I can't decide if it'd be more convenient for callers if we accept '...',
  * or a null-terminated array (i.e. execl vs execv)
@@ -298,7 +318,7 @@
 			return false;
 		}
 		if (pid != 0)
-			return true;
+			return wait_on_daemonized_start(c);
 		/* like daemon(), chdir to / and redirect 0,1,2 to /dev/null */
 		chdir("/");
 		close(0);
@@ -408,17 +428,6 @@
 	return ret == 0;
 }
 
-static bool lxcapi_wait(struct lxc_container *c, char *state, int timeout)
-{
-	int ret;
-
-	if (!c)
-		return false;
-
-	ret = lxc_wait(c->name, state, timeout);
-	return ret == 0;
-}
-
 static bool valid_template(char *t)
 {
 	struct stat statbuf;
