Index: src/libcfa/concurrency/alarm.c
===================================================================
--- src/libcfa/concurrency/alarm.c	(revision ade52728204b1fb638e539ca3bc2ea5abb2d80a2)
+++ src/libcfa/concurrency/alarm.c	(revision b1a43005e87089482731ec24b33f9461080e8ceb)
@@ -37,4 +37,5 @@
 
 void __kernel_set_timer( Duration alarm ) {
+	verifyf(alarm >= 1`us || alarm == 0, "Setting timer to < 1us (%luns)", alarm.tv);
 	setitimer( ITIMER_REAL, &(itimerval){ alarm }, NULL );
 }
@@ -68,5 +69,6 @@
 }
 
-__cfaabi_dbg_debug_do( bool validate( alarm_list_t * this ) {
+#if !defined(NDEBUG) && (defined(__CFA_DEBUG__) || defined(__CFA_VERIFY__))
+bool validate( alarm_list_t * this ) {
 	alarm_node_t ** it = &this->head;
 	while( (*it) ) {
@@ -75,5 +77,6 @@
 
 	return it == this->tail;
-})
+}
+#endif
 
 static inline void insert_at( alarm_list_t * this, alarm_node_t * n, __alarm_it_t p ) {
Index: src/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision ade52728204b1fb638e539ca3bc2ea5abb2d80a2)
+++ src/libcfa/concurrency/preemption.c	(revision b1a43005e87089482731ec24b33f9461080e8ceb)
@@ -91,4 +91,5 @@
 	//Loop throught every thing expired
 	while( node = get_expired( alarms, currtime ) ) {
+		// __cfaabi_dbg_print_buffer_decl( " KERNEL: preemption tick.\n" );
 
 		// Check if this is a kernel
@@ -103,4 +104,5 @@
 		Duration period = node->period;
 		if( period > 0 ) {
+			// __cfaabi_dbg_print_buffer_local( " KERNEL: alarm period is %lu.\n", period.tv );
 			node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
 			insert( alarms, node );             // Reinsert the node for the next time it triggers
@@ -112,5 +114,13 @@
 
 	// If there are still alarms pending, reset the timer
-	if( alarms->head ) { __kernel_set_timer( alarms->head->alarm - currtime ); }
+	if( alarms->head ) {
+		__cfaabi_dbg_print_buffer_decl( " KERNEL: @%lu(%lu) resetting alarm to %lu.\n", currtime.tv, __kernel_get_time().tv, (alarms->head->alarm - currtime).tv);
+		Duration delta = alarms->head->alarm - currtime;
+		Duration caped = max(delta, 50`us);
+		// itimerval tim  = { caped };
+		// __cfaabi_dbg_print_buffer_local( "    Values are %lu, %lu, %lu %lu.\n", delta.tv, caped.tv, tim.it_value.tv_sec, tim.it_value.tv_usec);
+
+		__kernel_set_timer( caped );
+	}
 }
 
@@ -335,5 +345,5 @@
 	if( !preemption_ready() ) { return; }
 
-	__cfaabi_dbg_print_buffer_decl( " KERNEL: preempting core %p (%p).\n", kernelTLS.this_processor, kernelTLS.this_thread );
+	__cfaabi_dbg_print_buffer_decl( " KERNEL: preempting core %p (%p @ %p).\n", kernelTLS.this_processor, kernelTLS.this_thread, (void *)(cxt->uc_mcontext.CFA_REG_IP) );
 
 	// Sync flag : prevent recursive calls to the signal handler
@@ -377,4 +387,5 @@
 				case EAGAIN :
 				case EINTR :
+					{__cfaabi_dbg_print_buffer_decl( " KERNEL: Spurious wakeup %d.\n", err );}
 					continue;
        			case EINVAL :
