Index: kernel/generic/src/proc/task.c
===================================================================
--- kernel/generic/src/proc/task.c	(revision 78acbc721cee3d7063c5c7c8adbf897587243cb1)
+++ kernel/generic/src/proc/task.c	(revision 1871118c75a2375392bbb2054288202965beca01)
@@ -385,10 +385,8 @@
 	irq_spinlock_lock(&tasks_lock, true);
 	irq_spinlock_lock(&TASK->lock, false);
-	irq_spinlock_lock(&threads_lock, false);
 
 	/* Set task name */
 	str_cpy(TASK->name, TASK_NAME_BUFLEN, namebuf);
 
-	irq_spinlock_unlock(&threads_lock, false);
 	irq_spinlock_unlock(&TASK->lock, false);
 	irq_spinlock_unlock(&tasks_lock, true);
@@ -529,5 +527,4 @@
 {
 	irq_spinlock_lock(&task->lock, false);
-	irq_spinlock_lock(&threads_lock, false);
 
 	/*
@@ -536,8 +533,11 @@
 
 	list_foreach(task->threads, th_link, thread_t, thread) {
-		thread_interrupt(thread, false);
+		thread_t *thr = thread_try_ref(thread);
+		if (thr)
+			thread_interrupt(thr, false);
+
+		// If NULL, the thread is already getting destroyed concurrently with this.
 	}
 
-	irq_spinlock_unlock(&threads_lock, false);
 	irq_spinlock_unlock(&task->lock, false);
 }
