Index: uspace/srv/devman/main.c
===================================================================
--- uspace/srv/devman/main.c	(revision 5cd136abc29be1860cb1f40730725d7f1d76a017)
+++ uspace/srv/devman/main.c	(revision 5e598e0672f90eafab573f18bd2183d7e3c1bf30)
@@ -258,8 +258,12 @@
 }
 
-static void devman_forward(ipc_callid_t iid, ipc_call_t *icall, bool drv_to_parent) {
-	device_handle_t handle;
+static void devman_forward(ipc_callid_t iid, ipc_call_t *icall, bool drv_to_parent) {	
+	
+	device_handle_t handle = IPC_GET_ARG2(*icall);
+	printf(NAME ": devman_forward - trying to forward connection to device with handle %x.\n", handle);
+	
 	node_t *dev = find_dev_node(&device_tree, handle);
 	if (NULL == dev) {
+		printf(NAME ": devman_forward error - no device with handle %x was found.\n", handle);
 		ipc_answer_0(iid, ENOENT);
 		return;
@@ -269,10 +273,13 @@
 	
 	if (drv_to_parent) {
-		driver = dev->parent->drv;
+		if (NULL != dev->parent) {
+			driver = dev->parent->drv;		
+		}
 	} else {
 		driver = dev->drv;		
 	}
 	
-	if (NULL == driver) {		
+	if (NULL == driver) {	
+		printf(NAME ": devman_forward error - no driver to connect to.\n", handle);
 		ipc_answer_0(iid, ENOENT);
 		return;	
@@ -286,4 +293,9 @@
 	}
 	
+	if (driver->phone <= 0) {
+		printf(NAME ": devman_forward: cound not forward to driver %s (the driver's phone is %x).\n", driver->name, driver->phone);
+		return;
+	}
+	printf(NAME ": devman_forward: forward to driver %s with phone %d.\n", driver->name, driver->phone);
 	ipc_forward_fast(iid, driver->phone, method, dev->handle, 0, IPC_FF_NONE);	
 }
