Index: uspace/app/trace/trace.c
===================================================================
--- uspace/app/trace/trace.c	(revision 2443ad8f535160d516359619d12e8e3971670065)
+++ uspace/app/trace/trace.c	(revision 3106054d4d858ffdc84fd8a04948c84f0832c541)
@@ -89,4 +89,5 @@
 
 static task_id_t task_id;
+static task_wait_t task_w;
 static bool task_wait_for;
 
@@ -113,5 +114,5 @@
 	errno_t rc;
 
-	rc = task_spawnv_debug(&task_id, NULL, cmd_path,
+	rc = task_spawnv_debug(&task_id, &task_w, cmd_path,
 	    (const char *const *)cmd_args, &sess);
 
@@ -135,4 +136,5 @@
 	errno_t rc;
 	bool debug_started = false;
+	bool wait_set_up = false;
 
 	if (sess == NULL) {
@@ -151,4 +153,12 @@
 
 		debug_started = true;
+
+		rc = task_setup_wait(task_id, &task_w);
+		if (rc != EOK) {
+			printf("Error setting up wait for task termination.\n");
+			goto error;
+		}
+
+		wait_set_up = true;
 	}
 
@@ -161,4 +171,6 @@
 	return EOK;
 error:
+	if (wait_set_up)
+		task_cancel_wait(&task_w);
 	if (debug_started)
 		udebug_end(sess);
@@ -807,5 +819,5 @@
 		printf("Waiting for task to exit.\n");
 
-		rc = task_wait_task_id(task_id, &texit, &retval);
+		rc = task_wait(&task_w, &texit, &retval);
 		if (rc != EOK) {
 			printf("Failed waiting for task.\n");
