Index: kernel/generic/include/proc/thread.h
===================================================================
--- kernel/generic/include/proc/thread.h	(revision 7364e2d176f0e809523b63ac494905e4c7444832)
+++ kernel/generic/include/proc/thread.h	(revision 33e15a0909d5c911a064d992b5fbc99a68234b68)
@@ -170,5 +170,5 @@
 	 * to the kernel console upon scheduling this thread.
 	 */
-	bool btrace;
+	atomic_int_fast8_t btrace;
 
 	/** Debugging stuff */
Index: kernel/generic/src/proc/scheduler.c
===================================================================
--- kernel/generic/src/proc/scheduler.c	(revision 7364e2d176f0e809523b63ac494905e4c7444832)
+++ kernel/generic/src/proc/scheduler.c	(revision 33e15a0909d5c911a064d992b5fbc99a68234b68)
@@ -340,5 +340,5 @@
 
 #ifdef CONFIG_UDEBUG
-	if (THREAD->btrace) {
+	if (atomic_get_unordered(&THREAD->btrace)) {
 		istate_t *istate = THREAD->udebug.uspace_state;
 		if (istate != NULL) {
@@ -349,5 +349,5 @@
 		}
 
-		THREAD->btrace = false;
+		atomic_set_unordered(&THREAD->btrace, false);
 	}
 #endif
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision 7364e2d176f0e809523b63ac494905e4c7444832)
+++ kernel/generic/src/proc/thread.c	(revision 33e15a0909d5c911a064d992b5fbc99a68234b68)
@@ -289,5 +289,5 @@
 #ifdef CONFIG_UDEBUG
 	/* Initialize debugging stuff */
-	thread->btrace = false;
+	atomic_init(&thread->btrace, false);
 	udebug_thread_initialize(&thread->udebug);
 #endif
@@ -908,7 +908,5 @@
 
 	printf("Scheduling thread stack trace.\n");
-	irq_spinlock_lock(&thread->lock, true);
-	thread->btrace = true;
-	irq_spinlock_unlock(&thread->lock, true);
+	atomic_set_unordered(&thread->btrace, true);
 
 	thread_wakeup(thread);
