diff --git a/os/src/init/main.cc b/os/src/init/main.cc
index f281fa6068..8ff23e945f 100644
--- a/os/src/init/main.cc
+++ b/os/src/init/main.cc
@@ -157,15 +157,20 @@ int main(int, char **)
 	catch (...) { }
 
 	/* create children */
-	Genode::Xml_node start_node = Genode::config()->xml_node().sub_node("start");
-	for (;; start_node = start_node.next("start")) {
+	try {
+		Genode::Xml_node start_node = Genode::config()->xml_node().sub_node("start");
+		for (;; start_node = start_node.next("start")) {
 
-		children.insert(new (Genode::env()->heap())
-		                Child(start_node, default_route_node, &children,
-		                      read_prio_levels_log2(),
-		                      &parent_services, &child_services, &cap));
+			children.insert(new (Genode::env()->heap())
+							Child(start_node, default_route_node, &children,
+								  read_prio_levels_log2(),
+								  &parent_services, &child_services, &cap));
 
-		if (start_node.is_last("start")) break;
+			if (start_node.is_last("start")) break;
+		}
+	}
+	catch (Genode::Xml_node::Nonexistent_sub_node) {
+		PERR("No children to start");
 	}
 
 	/* start children */