Index: uspace/app/trace/ipc_desc.c
===================================================================
--- uspace/app/trace/ipc_desc.c	(revision c4f7bf6d66e1017c52094600930917ad0597d044)
+++ uspace/app/trace/ipc_desc.c	(revision d42a0bdaf2edb208d63cda9675f5d6971f578478)
@@ -49,8 +49,7 @@
 	{ IPC_M_DATA_READ,        "DATA_READ" },
 	{ IPC_M_DEBUG,            "DEBUG" },
-	
-	/* Terminating entry */
-	{ 0, NULL }
 };
+
+size_t ipc_methods_len = sizeof(ipc_methods) / sizeof(ipc_m_desc_t);
 
 /** @}
Index: uspace/app/trace/ipc_desc.h
===================================================================
--- uspace/app/trace/ipc_desc.h	(revision c4f7bf6d66e1017c52094600930917ad0597d044)
+++ uspace/app/trace/ipc_desc.h	(revision d42a0bdaf2edb208d63cda9675f5d6971f578478)
@@ -42,4 +42,5 @@
 
 extern ipc_m_desc_t ipc_methods[];
+extern size_t ipc_methods_len;
 
 #endif
Index: uspace/app/trace/ipcp.c
===================================================================
--- uspace/app/trace/ipcp.c	(revision c4f7bf6d66e1017c52094600930917ad0597d044)
+++ uspace/app/trace/ipcp.c	(revision d42a0bdaf2edb208d63cda9675f5d6971f578478)
@@ -140,7 +140,4 @@
 void ipcp_init(void)
 {
-	ipc_m_desc_t *desc;
-	oper_t *oper;
-
 	val_type_t arg_def[OPER_MAX_ARGS] = {
 		V_INTEGER,
@@ -162,11 +159,8 @@
 	proto_system = proto_new("system");
 
-	desc = ipc_methods;
-	while (desc->number != 0) {
-		oper = oper_new(desc->name, OPER_MAX_ARGS, arg_def, V_INTEGER,
-			OPER_MAX_ARGS, arg_def);
-		proto_add_oper(proto_system, desc->number, oper);
-
-		++desc;
+	for (size_t i = 0; i < ipc_methods_len; i++) {
+		oper_t *oper = oper_new(ipc_methods[i].name, OPER_MAX_ARGS,
+		    arg_def, V_INTEGER, OPER_MAX_ARGS, arg_def);
+		proto_add_oper(proto_system, ipc_methods[i].number, oper);
 	}
 
Index: uspace/app/trace/syscalls.c
===================================================================
--- uspace/app/trace/syscalls.c	(revision c4f7bf6d66e1017c52094600930917ad0597d044)
+++ uspace/app/trace/syscalls.c	(revision d42a0bdaf2edb208d63cda9675f5d6971f578478)
@@ -46,4 +46,5 @@
 
     [SYS_TASK_GET_ID] = { "task_get_id",		1,	V_ERRNO },
+    [SYS_TASK_SET_NAME] = { "task_set_name", 		2,	V_ERRNO },
     [SYS_FUTEX_SLEEP] = { "futex_sleep_timeout",	3,	V_ERRNO },
     [SYS_FUTEX_WAKEUP] = { "futex_wakeup",		1,	V_ERRNO },
@@ -82,4 +83,6 @@
 };
 
+const size_t syscall_desc_len = (sizeof(syscall_desc) / sizeof(sc_desc_t));
+
 /** @}
  */
Index: uspace/app/trace/syscalls.h
===================================================================
--- uspace/app/trace/syscalls.h	(revision c4f7bf6d66e1017c52094600930917ad0597d044)
+++ uspace/app/trace/syscalls.h	(revision d42a0bdaf2edb208d63cda9675f5d6971f578478)
@@ -36,4 +36,7 @@
 #define SYSCALLS_H_
 
+#include <stdbool.h>
+#include <unistd.h>
+
 #include "trace.h"
 
@@ -45,4 +48,10 @@
 
 extern const sc_desc_t syscall_desc[];
+extern const size_t syscall_desc_len;
+
+static inline bool syscall_desc_defined(unsigned sc_id)
+{
+	return (sc_id < syscall_desc_len && syscall_desc[sc_id].name != NULL);
+}
 
 #endif
Index: uspace/app/trace/trace.c
===================================================================
--- uspace/app/trace/trace.c	(revision c4f7bf6d66e1017c52094600930917ad0597d044)
+++ uspace/app/trace/trace.c	(revision d42a0bdaf2edb208d63cda9675f5d6971f578478)
@@ -136,5 +136,4 @@
 	}
 
-	free(task_ldr);
 	task_ldr = NULL;
 
@@ -348,6 +347,12 @@
 	if ((display_mask & DM_SYSCALL) != 0) {
 		/* Print syscall name and arguments */
-		printf("%s", syscall_desc[sc_id].name);
-		print_sc_args(sc_args, syscall_desc[sc_id].n_args);
+		if (syscall_desc_defined(sc_id)) {
+			printf("%s", syscall_desc[sc_id].name);
+			print_sc_args(sc_args, syscall_desc[sc_id].n_args);
+		}
+		else {
+			printf("unknown_syscall<%d>", sc_id);
+			print_sc_args(sc_args, 6);
+		}
 	}
 }
@@ -372,5 +377,8 @@
 	if ((display_mask & DM_SYSCALL) != 0) {
 		/* Print syscall return value */
-		rv_type = syscall_desc[sc_id].rv_type;
+		if (syscall_desc_defined(sc_id))
+			rv_type = syscall_desc[sc_id].rv_type;
+		else
+			rv_type = V_PTR;
 		print_sc_retval(sc_rc, rv_type);
 	}
@@ -497,5 +505,5 @@
 	ldr = loader_connect();
 	if (ldr == NULL)
-		return 0;
+		return NULL;
 
 	/* Get task ID. */
