Index: src/libcfa/concurrency/coroutine
===================================================================
--- src/libcfa/concurrency/coroutine	(revision 39fea2f76762fc5d71214cc7fa748f729beb7ffa)
+++ src/libcfa/concurrency/coroutine	(revision 4b6ef7029b7327923c4ddf07c1f9b0f8d4d1af9f)
@@ -103,4 +103,5 @@
 		// set last resumer
 		dst->last = src;
+		dst->starter = dst->starter ? dst->starter : src;
 	} // if
 
Index: src/libcfa/concurrency/coroutine.c
===================================================================
--- src/libcfa/concurrency/coroutine.c	(revision 39fea2f76762fc5d71214cc7fa748f729beb7ffa)
+++ src/libcfa/concurrency/coroutine.c	(revision 4b6ef7029b7327923c4ddf07c1f9b0f8d4d1af9f)
@@ -65,5 +65,5 @@
 	this.errno_ = 0;
 	this.state = Start;
-	this.starter = this_coroutine;
+	this.starter = NULL;
 	this.last = NULL;
 }
@@ -176,9 +176,9 @@
 
 		assertf( src->starter != 0,
-			"Attempt to suspend coroutine \"%.256s\" (%p) that does not have a starter.\n"
-			"Possible cause is a resume of a coroutine already destroyed or not yet constructed",
+			"Attempt to suspend/leave coroutine \"%.256s\" (%p) that has never been resumed.\n"
+			"Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
 			src->name, src );
 		assertf( src->starter->state != Halted,
-			"Attempt by coroutine \"%.256s\" (%p) to suspend back to terminated coroutine \"%.256s\" (%p).\n"
+			"Attempt by coroutine \"%.256s\" (%p) to suspend/leave back to terminated coroutine \"%.256s\" (%p).\n"
 			"Possible cause is terminated coroutine's main routine has already returned.",
 			src->name, src, src->starter->name, src->starter );
Index: src/libcfa/concurrency/kernel.c
===================================================================
--- src/libcfa/concurrency/kernel.c	(revision 39fea2f76762fc5d71214cc7fa748f729beb7ffa)
+++ src/libcfa/concurrency/kernel.c	(revision 4b6ef7029b7327923c4ddf07c1f9b0f8d4d1af9f)
@@ -115,5 +115,5 @@
 void ?{}(processorCtx_t & this, processor * proc) {
 	(this.__cor){ "Processor" };
-	this.__cor.starter = &mainThread->cor;
+	this.__cor.starter = NULL;
 	this.proc = proc;
 	proc->runner = &this;
