Index: abi/include/abi/ipc/event.h
===================================================================
--- abi/include/abi/ipc/event.h	(revision fb13b443f9001bc37d9726efa1ca239735ab5bd0)
+++ abi/include/abi/ipc/event.h	(revision 103939e306be2c8479c923b22f2b89e6530d9111)
@@ -44,4 +44,6 @@
 	/** A task/thread has faulted and will be terminated */
 	EVENT_FAULT,
+	/** A task terminated (on its own or it was killed) */
+	EVENT_EXIT,
 	/** New data available in kernel log */
 	EVENT_KLOG,
Index: kernel/generic/src/proc/task.c
===================================================================
--- kernel/generic/src/proc/task.c	(revision fb13b443f9001bc37d9726efa1ca239735ab5bd0)
+++ kernel/generic/src/proc/task.c	(revision 103939e306be2c8479c923b22f2b89e6530d9111)
@@ -586,10 +586,10 @@
 /** Kill the currently running task.
  *
- * @param notify Send out fault notifications.
+ * @param fault Send out fault notifications.
  *
  * @return Zero on success or an error code from errno.h.
  *
  */
-void task_kill_self(bool notify)
+void task_kill_self(bool fault)
 {
 	/*
@@ -599,5 +599,5 @@
 	 * that's all you get.
 	 */
-	if (notify) {
+	if (fault) {
 		/* Notify the subscriber that a fault occurred. */
 		if (event_notify_3(EVENT_FAULT, false, LOWER32(TASK->taskid),
@@ -619,10 +619,10 @@
 /** Process syscall to terminate the current task.
  *
- * @param notify Send out fault notifications.
- *
- */
-sys_errno_t sys_task_exit(sysarg_t notify)
-{
-	task_kill_self(notify);
+ * @param fault Send out fault notifications.
+ *
+ */
+sys_errno_t sys_task_exit(sysarg_t fault)
+{
+	task_kill_self(fault);
 	unreachable();
 }
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision fb13b443f9001bc37d9726efa1ca239735ab5bd0)
+++ kernel/generic/src/proc/thread.c	(revision 103939e306be2c8479c923b22f2b89e6530d9111)
@@ -522,4 +522,11 @@
 			sys_waitq_task_cleanup();
 			LOG("Cleanup of task %" PRIu64 " completed.", TASK->taskid);
+
+			/*
+			 * Notify about task exit, it is meant to be signalled
+			 * after any IPC cleanup operations. Ignore any errors.
+			 */
+			(void)event_notify_2(EVENT_EXIT, false,
+			    LOWER32(TASK->taskid), UPPER32(TASK->taskid));
 		}
 	}
