Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision b14ec5fb3dea61c99fd6a0570e26b45982e7b423)
+++ libcfa/src/concurrency/kernel.cfa	(revision a633f6fa702673747b3ee86a0f8e2e48456226f4)
@@ -825,5 +825,10 @@
 		insert_last(this.actives, proc);
 
-		__atomic_store_n(&this.fd, this.idles`first.idle, __ATOMIC_SEQ_CST);
+		{
+			int fd = 0;
+			if(!this.idles`isEmpty) fd = this.idles`first.idle;
+			__atomic_store_n(&this.fd, fd, __ATOMIC_SEQ_CST);
+		}
+
 	unlock( this );
 	/* paranoid */ verify( ! __preemption_enabled() );
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision b14ec5fb3dea61c99fd6a0570e26b45982e7b423)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision a633f6fa702673747b3ee86a0f8e2e48456226f4)
@@ -268,14 +268,5 @@
 	ready_schedule_lock();
 
-	// Simple counting lock, acquired, acquired by incrementing the counter
-	// to an odd number
-	for() {
-		uint64_t l = this.lock;
-		if(
-			(0 == (l % 2))
-			&& __atomic_compare_exchange_n(&this.lock, &l, l + 1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-		) return;
-		Pause();
-	}
+	lock( this.lock __cfaabi_dbg_ctx2 );
 
 	/* paranoid */ verify( ! __preemption_enabled() );
@@ -289,11 +280,5 @@
 	ready_schedule_lock();
 
-	// Simple counting lock, acquired, acquired by incrementing the counter
-	// to an odd number
-	uint64_t l = this.lock;
-	if(
-		(0 == (l % 2))
-		&& __atomic_compare_exchange_n(&this.lock, &l, l + 1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-	) {
+	if(try_lock( this.lock __cfaabi_dbg_ctx2 )) {
 		// success
 		/* paranoid */ verify( ! __preemption_enabled() );
@@ -311,7 +296,5 @@
 	/* paranoid */ verify( ! __preemption_enabled() );
 
-	/* paranoid */ verify( 1 == (this.lock % 2) );
-	// Simple couting lock, release by incrementing to an even number
-	__atomic_fetch_add( &this.lock, 1, __ATOMIC_SEQ_CST );
+	unlock(this.lock);
 
 	// Release the global lock, which we acquired when locking
