Index: uspace/srv/taskmon/taskmon.c
===================================================================
--- uspace/srv/taskmon/taskmon.c	(revision a074b4f9d5cf65707ae3aaffaf4564453f710efd)
+++ uspace/srv/taskmon/taskmon.c	(revision 03333bc223dc846dc807310907f6e1ab53151b88)
@@ -48,7 +48,9 @@
 static void fault_event(ipc_callid_t callid, ipc_call_t *call)
 {
-	char *argv[5];
+	char *argv[11];
 	char *fname;
+	char *dump_fname;
 	char *s_taskid;
+	char **s;
 
 	task_id_t taskid;
@@ -63,23 +65,37 @@
 	}
 
+	if (asprintf(&dump_fname, "/scratch/d%lld.txt", taskid) < 0) {
+		printf("Memory allocation failed.\n");
+		return;
+	}
+
 	printf(NAME ": Task %lld fault in thread 0x%lx.\n", taskid, thread);
 
-	argv[0] = fname = "/app/taskdump";
+	argv[0] = fname = "/app/redir";
+	argv[1] = "-i";
+	argv[2] = "/readme";
+	argv[3] = "-o";
+	argv[4] = dump_fname;
+	argv[5] = "--";
 
 #ifdef CONFIG_VERBOSE_DUMPS
-	argv[1] = "-m";
-	argv[2] = "-t";
-	argv[3] = s_taskid;
-	argv[4] = NULL;
-
-	printf(NAME ": Executing %s %s %s %s\n", argv[0], argv[1], argv[2],
-	    argv[3]);
+	argv[6] = "/app/taskdump";
+	argv[7] = "-m";
+	argv[8] = "-t";
+	argv[9] = s_taskid;
+	argv[10] = NULL;
 #else
-	argv[1] = "-t";
-	argv[2] = s_taskid;
-	argv[3] = NULL;
-
-	printf(NAME ": Executing %s %s %s\n", argv[0], argv[1], argv[2]);
+	argv[6] = "/app/taskdump";
+	argv[7] = "-t";
+	argv[8] = s_taskid;
+	argv[9] = NULL;
 #endif
+	printf(NAME ": Executing");
+        s = argv;
+	while (*s != NULL) {
+		printf(" %s", *s);
+		++s;
+	}
+	putchar('\n');
 
 	if (!task_spawn(fname, argv))
