Index: Jenkins/FullBuild
===================================================================
--- Jenkins/FullBuild	(revision b3a0df6550f58a1a91e1acf2905fbb0a18cad167)
+++ Jenkins/FullBuild	(revision a6e0e4c5c29ace5b7d75b6c7e35a102690aadc6b)
@@ -8,4 +8,7 @@
 	def err = null
 
+	final scmVars = checkout scm
+	final commitId = scmVars.GIT_COMMIT
+
 	try {
 		//Wrap build to add timestamp to command line
@@ -13,6 +16,4 @@
 
 			stage('Build') {
-
-				results = [null, null]
 
 				parallel (
@@ -31,5 +32,5 @@
 
 			stage('Package') {
-				build job: 'Cforall_Distribute_Ref', parameters: [string(name: 'GitRef', value: gitRefNewValue), string(name: 'Build', value: currentBuild.number)]
+				build job: 'Cforall_Distribute_Ref', parameters: [string(name: 'GitRef', value: commitId), string(name: 'Build', value: currentBuild.number)]
 			}
 		}
@@ -102,20 +103,4 @@
 }
 
-//Helper routine to collect information about the git history
-def collect_git_info() {
-
-	//create the temporary output directory in case it doesn't already exist
-	def out_dir = pwd tmp: true
-	sh "mkdir -p ${out_dir}"
-
-	//parse git logs to find what changed
-	dir("../Cforall_Full_Build@script") {
-		sh "git reflog > ${out_dir}/GIT_COMMIT"
-	}
-	git_reflog = readFile("${out_dir}/GIT_COMMIT")
-	gitRefOldValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][1]
-	gitRefNewValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][2]
-}
-
 //===========================================================================================================
 //Routine responsible of sending the email notification once the build is completed
Index: benchmark/io/http/main.cfa
===================================================================
--- benchmark/io/http/main.cfa	(revision b3a0df6550f58a1a91e1acf2905fbb0a18cad167)
+++ benchmark/io/http/main.cfa	(revision a6e0e4c5c29ace5b7d75b6c7e35a102690aadc6b)
@@ -75,7 +75,22 @@
 	address.sin_port = htons( options.socket.port );
 
-	ret = bind( server_fd, (struct sockaddr *)&address, sizeof(address) );
-	if(ret < 0) {
-		abort( "bind error: (%d) %s\n", (int)errno, strerror(errno) );
+	int waited = 0;
+	for() {
+		ret = bind( server_fd, (struct sockaddr *)&address, sizeof(address) );
+		if(ret < 0) {
+			if(errno == 98) {
+				if(waited == 0) {
+					printf("Waiting for port\n");
+				} else {
+					printf("\r%d", waited);
+					fflush(stdout);
+				}
+				waited ++;
+				sleep( 1`s );
+				continue;
+			}
+			abort( "bind error: (%d) %s\n", (int)errno, strerror(errno) );
+		}
+		break;
 	}
 
Index: libcfa/src/concurrency/coroutine.hfa
===================================================================
--- libcfa/src/concurrency/coroutine.hfa	(revision b3a0df6550f58a1a91e1acf2905fbb0a18cad167)
+++ libcfa/src/concurrency/coroutine.hfa	(revision a6e0e4c5c29ace5b7d75b6c7e35a102690aadc6b)
@@ -144,8 +144,6 @@
 
 	if( unlikely(dst->context.SP == 0p) ) {
-		active_thread()->curr_cor = dst;
 		__stack_prepare(&dst->stack, 65000);
 		__cfactx_start(main, dst, cor, __cfactx_invoke_coroutine);
-		active_thread()->curr_cor = src;
 	}
 
Index: libcfa/src/concurrency/io/setup.cfa
===================================================================
--- libcfa/src/concurrency/io/setup.cfa	(revision b3a0df6550f58a1a91e1acf2905fbb0a18cad167)
+++ libcfa/src/concurrency/io/setup.cfa	(revision a6e0e4c5c29ace5b7d75b6c7e35a102690aadc6b)
@@ -17,4 +17,9 @@
 #define _GNU_SOURCE         /* See feature_test_macros(7) */
 
+#if defined(__CFA_DEBUG__)
+	// #define __CFA_DEBUG_PRINT_IO__
+	// #define __CFA_DEBUG_PRINT_IO_CORE__
+#endif
+
 #include "io/types.hfa"
 #include "kernel.hfa"
@@ -111,5 +116,5 @@
 
 	void __kernel_io_startup(void) {
-		__cfaabi_dbg_print_safe( "Kernel : Creating EPOLL instance\n" );
+		__cfadbg_print_safe(io_core, "Kernel : Creating EPOLL instance\n" );
 
 		iopoll.epollfd = epoll_create1(0);
@@ -118,5 +123,5 @@
 		}
 
-		__cfaabi_dbg_print_safe( "Kernel : Starting io poller thread\n" );
+		__cfadbg_print_safe(io_core, "Kernel : Starting io poller thread\n" );
 
 		iopoll.run = true;
@@ -141,5 +146,5 @@
 		// Io polling is now fully stopped
 
-		__cfaabi_dbg_print_safe( "Kernel : IO poller stopped\n" );
+		__cfadbg_print_safe(io_core, "Kernel : IO poller stopped\n" );
 	}
 
@@ -149,5 +154,5 @@
 		id.id = doregister(&id);
 		__cfaabi_tls.this_proc_id = &id;
-		__cfaabi_dbg_print_safe( "Kernel : IO poller thread starting\n" );
+		__cfadbg_print_safe(io_core, "Kernel : IO poller thread starting\n" );
 
 		// Block signals to control when they arrive
@@ -184,5 +189,5 @@
 		}
 
-		__cfaabi_dbg_print_safe( "Kernel : IO poller thread stopping\n" );
+		__cfadbg_print_safe(io_core, "Kernel : IO poller thread stopping\n" );
 		unregister(&id);
 		return 0p;
Index: libcfa/src/heap.cfa
===================================================================
--- libcfa/src/heap.cfa	(revision b3a0df6550f58a1a91e1acf2905fbb0a18cad167)
+++ libcfa/src/heap.cfa	(revision a6e0e4c5c29ace5b7d75b6c7e35a102690aadc6b)
@@ -10,6 +10,6 @@
 // Created On       : Tue Dec 19 21:58:35 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Sep  7 22:17:46 2020
-// Update Count     : 957
+// Last Modified On : Fri Dec 11 07:36:34 2020
+// Update Count     : 970
 //
 
@@ -464,4 +464,22 @@
 } // headers
 
+#ifdef __CFA_DEBUG__
+#if __SIZEOF_POINTER__ == 4
+#define MASK 0xdeadbeef
+#else
+#define MASK 0xdeadbeefdeadbeef
+#endif
+#define STRIDE size_t
+
+static void * Memset( void * addr, STRIDE size ) {		// debug only
+	if ( size % sizeof(STRIDE) != 0 ) abort( "Memset() : internal error, size %zd not multiple of %zd.", size, sizeof(STRIDE) );
+	if ( (STRIDE)addr % sizeof(STRIDE) != 0 ) abort( "Memset() : internal error, addr %p not multiple of %zd.", addr, sizeof(STRIDE) );
+
+	STRIDE * end = (STRIDE *)addr + size / sizeof(STRIDE);
+	for ( STRIDE * p = (STRIDE *)addr; p < end; p += 1 ) *p = MASK;
+	return addr;
+} // Memset
+#endif // __CFA_DEBUG__
+
 #define NO_MEMORY_MSG "insufficient heap memory available for allocating %zd new bytes."
 
@@ -483,5 +501,6 @@
 		#ifdef __CFA_DEBUG__
 		// Set new memory to garbage so subsequent uninitialized usages might fail.
-		memset( (char *)heapEnd + heapRemaining, '\377', increase );
+		//memset( (char *)heapEnd + heapRemaining, '\377', increase );
+		Memset( (char *)heapEnd + heapRemaining, increase );
 		#endif // __CFA_DEBUG__
 		rem = heapRemaining + increase - size;
@@ -557,5 +576,6 @@
 		#ifdef __CFA_DEBUG__
 		// Set new memory to garbage so subsequent uninitialized usages might fail.
-		memset( block, '\377', tsize );
+		//memset( block, '\377', tsize );
+		Memset( block, tsize );
 		#endif // __CFA_DEBUG__
 		block->header.kind.real.blockSize = tsize;		// storage size for munmap
@@ -606,5 +626,6 @@
 		#ifdef __CFA_DEBUG__
 		// Set free memory to garbage so subsequent usages might fail.
-		memset( ((HeapManager.Storage *)header)->data, '\377', freeElem->blockSize - sizeof( HeapManager.Storage ) );
+		//memset( ((HeapManager.Storage *)header)->data, '\377', freeElem->blockSize - sizeof( HeapManager.Storage ) );
+		Memset( ((HeapManager.Storage *)header)->data, freeElem->blockSize - sizeof( HeapManager.Storage ) );
 		#endif // __CFA_DEBUG__
 
@@ -935,5 +956,5 @@
 	  		header->kind.real.size = size;				// reset allocation size
 	  		if ( unlikely( ozfill ) && size > osize ) {	// previous request zero fill and larger ?
-	  			memset( (char *)oaddr + osize, (int)'\0', size - osize ); // initialize added storage
+	  			memset( (char *)oaddr + osize, '\0', size - osize ); // initialize added storage
 	  		} // if
 			return oaddr;
@@ -960,5 +981,5 @@
 			header->kind.real.blockSize |= 2;			// mark new request as zero filled
 			if ( size > osize ) {						// previous request larger ?
-				memset( (char *)naddr + osize, (int)'\0', size - osize ); // initialize added storage
+				memset( (char *)naddr + osize, '\0', size - osize ); // initialize added storage
 			} // if
 		} // if
@@ -1327,5 +1348,5 @@
 		header->kind.real.blockSize |= 2;				// mark new request as zero filled
 		if ( size > osize ) {							// previous request larger ?
-			memset( (char *)naddr + osize, (int)'\0', size - osize ); // initialize added storage
+			memset( (char *)naddr + osize, '\0', size - osize ); // initialize added storage
 		} // if
 	} // if
