Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision c5c743e785c46b220e1c27e3f617c716deccbf1a)
+++ libcfa/src/concurrency/io.cfa	(revision 6502a2b0f468295de4697bfd8846469780414c30)
@@ -89,4 +89,5 @@
 		void ?{}( __io_poller_fast & this, struct cluster & cltr ) {
 			this.ring = &cltr.io;
+			this.waiting = true;
 			(this.thrd){ "Fast I/O Poller", cltr };
 		}
@@ -242,4 +243,9 @@
 
 		#if defined(__CFA_IO_POLLING_USER__)
+			verify( this.io.poller.fast.waiting );
+			verify( this.io.poller.fast.thrd.state == Blocked );
+
+			this.io.poller.fast.thrd.curr_cluster = mainCluster;
+
 			// unpark the fast io_poller
 			unpark( &this.io.poller.fast.thrd __cfaabi_dbg_ctx2 );
@@ -409,5 +415,8 @@
 			while(!__atomic_load_n(&this.ring->done, __ATOMIC_SEQ_CST)) {
 				// Drain the io
-				if(0 > __drain_io( *this.ring, 0p, 0, false )) {
+				this.waiting = false;
+				int ret = __drain_io( *this.ring, 0p, 0, false );
+				this.waiting = true;
+				if(0 > ret) {
 					// If we got something, just yield and check again
 					yield();
Index: libcfa/src/concurrency/kernel.hfa
===================================================================
--- libcfa/src/concurrency/kernel.hfa	(revision c5c743e785c46b220e1c27e3f617c716deccbf1a)
+++ libcfa/src/concurrency/kernel.hfa	(revision 6502a2b0f468295de4697bfd8846469780414c30)
@@ -191,4 +191,5 @@
 	struct __io_poller_fast {
 		struct io_ring * ring;
+		bool waiting;
 		$thread thrd;
 	};
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision c5c743e785c46b220e1c27e3f617c716deccbf1a)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 6502a2b0f468295de4697bfd8846469780414c30)
@@ -59,4 +59,6 @@
 extern volatile thread_local __cfa_kernel_preemption_state_t preemption_state __attribute__ ((tls_model ( "initial-exec" )));
 
+extern cluster * mainCluster;
+
 //-----------------------------------------------------------------------------
 // Threads
