Index: uspace/app/init/init.c
===================================================================
--- uspace/app/init/init.c	(revision a074b4f9d5cf65707ae3aaffaf4564453f710efd)
+++ uspace/app/init/init.c	(revision 03333bc223dc846dc807310907f6e1ab53151b88)
@@ -233,4 +233,18 @@
 }
 
+static void mount_scratch(void)
+{
+	int rc;
+
+	printf("Trying to mount null/0 on /scratch... ");
+	fflush(stdout);
+
+	rc = mount("tmpfs", "/scratch", "null/0", "", 0);
+	if (rc == EOK)
+		printf("OK\n");
+	else
+		printf("Failed\n");
+}
+
 static void mount_data(void)
 {
@@ -255,4 +269,9 @@
 		return -1;
 	}
+
+	/* Make sure tmpfs is running. */
+	if (str_cmp(STRING(RDFMT), "tmpfs") != 0) {
+		spawn("/srv/tmpfs");
+	}
 	
 	spawn("/srv/devfs");
@@ -263,4 +282,6 @@
 		return -2;
 	}
+
+	mount_scratch();
 	
 	spawn("/srv/fhc");
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))
