Index: uspace/app/trace/trace.c
===================================================================
--- uspace/app/trace/trace.c	(revision 9ad5b5ccf49962c0f185225b4f87913ac4708164)
+++ uspace/app/trace/trace.c	(revision c8404d4baf23fe1c3c923857794f7785abae5e7b)
@@ -69,4 +69,6 @@
 int next_thread_id;
 
+ipc_call_t thread_ipc_req[THBUF_SIZE];
+
 int phoneid;
 bool abort_trace;
@@ -340,5 +342,5 @@
 }
 
-static void sc_ipc_call_sync_slow(sysarg_t *sc_args)
+static void sc_ipc_call_sync_slow_b(unsigned thread_id, sysarg_t *sc_args)
 {
 	ipc_call_t question, reply;
@@ -347,13 +349,25 @@
 	memset(&question, 0, sizeof(question));
 	rc = udebug_mem_read(phoneid, &question.args, sc_args[1], sizeof(question.args));
-	printf("dmr->%d\n", rc);
-	if (rc < 0) return;
+	if (rc < 0) {
+		printf("Error: mem_read->%d\n", rc);
+		return;
+	}
+
+	thread_ipc_req[thread_id] = question;
+}
+
+static void sc_ipc_call_sync_slow_e(unsigned thread_id, sysarg_t *sc_args)
+{
+	ipc_call_t question, reply;
+	int rc;
 
 	memset(&reply, 0, sizeof(reply));
 	rc = udebug_mem_read(phoneid, &reply.args, sc_args[2], sizeof(reply.args));
-	printf("dmr->%d\n", rc);
-	if (rc < 0) return;
-
-	ipcp_call_sync(sc_args[0], &question, &reply);
+	if (rc < 0) {
+		printf("Error: mem_read->%d\n", rc);
+		return;
+	}
+
+	ipcp_call_sync(sc_args[0], &thread_ipc_req[thread_id], &reply);
 }
 
@@ -400,4 +414,12 @@
 	}
 
+	switch (sc_id) {
+	case SYS_IPC_CALL_SYNC_SLOW:
+		sc_ipc_call_sync_slow_b(thread_id, sc_args);
+		break;
+	default:
+		break;
+	}
+
 	async_serialize_end();
 }
@@ -440,5 +462,5 @@
 		break;
 	case SYS_IPC_CALL_SYNC_SLOW:
-		sc_ipc_call_sync_slow(sc_args);
+		sc_ipc_call_sync_slow_e(thread_id, sc_args);
 		break;
 	case SYS_IPC_WAIT:
@@ -471,4 +493,8 @@
 	thread_hash = (uintptr_t)thread_hash_arg;
 	thread_id = next_thread_id++;
+	if (thread_id >= THBUF_SIZE) {
+		printf("Too many threads.\n");
+		return ELIMIT;
+	}
 
 	printf("Start tracing thread [%d] (hash 0x%lx).\n", thread_id, thread_hash);
