Index: libcfa/src/assert.cfa
===================================================================
--- libcfa/src/assert.cfa	(revision bdf22ae431e956481d293596f76b2f322345b749)
+++ libcfa/src/assert.cfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov 28 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:10:26 2017
-// Update Count     : 2
+// Last Modified On : Thu Nov 21 17:09:26 2019
+// Update Count     : 5
 //
 
@@ -17,4 +17,5 @@
 #include <stdarg.h>								// varargs
 #include <stdio.h>								// fprintf
+#include <unistd.h>								// STDERR_FILENO
 #include "bits/debug.hfa"
 
@@ -26,5 +27,5 @@
 	// called by macro assert in assert.h
 	void __assert_fail( const char *assertion, const char *file, unsigned int line, const char *function ) {
-		__cfaabi_dbg_bits_print_safe( CFA_ASSERT_FMT ".\n", assertion, __progname, function, line, file );
+		__cfaabi_bits_print_safe( STDERR_FILENO, CFA_ASSERT_FMT ".\n", assertion, __progname, function, line, file );
 		abort();
 	}
@@ -32,14 +33,14 @@
 	// called by macro assertf
 	void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) {
-		__cfaabi_dbg_bits_acquire();
-		__cfaabi_dbg_bits_print_nolock( CFA_ASSERT_FMT ": ", assertion, __progname, function, line, file );
+		__cfaabi_bits_acquire();
+		__cfaabi_bits_print_nolock( STDERR_FILENO, CFA_ASSERT_FMT ": ", assertion, __progname, function, line, file );
 
 		va_list args;
 		va_start( args, fmt );
-		__cfaabi_dbg_bits_print_vararg( fmt, args );
+		__cfaabi_bits_print_vararg( STDERR_FILENO, fmt, args );
 		va_end( args );
 
-		__cfaabi_dbg_bits_print_nolock( "\n" );
-		__cfaabi_dbg_bits_release();
+		__cfaabi_bits_print_nolock( STDERR_FILENO, "\n" );
+		__cfaabi_bits_release();
 		abort();
 	}
Index: libcfa/src/bits/align.hfa
===================================================================
--- libcfa/src/bits/align.hfa	(revision bdf22ae431e956481d293596f76b2f322345b749)
+++ libcfa/src/bits/align.hfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov 28 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 23:05:35 2017
-// Update Count     : 2
+// Last Modified On : Sat Nov 16 18:58:22 2019
+// Update Count     : 3
 //
 // This  library is free  software; you  can redistribute  it and/or  modify it
@@ -33,5 +33,7 @@
 
 // Minimum size used to align memory boundaries for memory allocations.
-#define libAlign() (sizeof(double))
+//#define libAlign() (sizeof(double))
+// gcc-7 uses xmms instructions, which require 16 byte alignment.
+#define libAlign() (16)
 
 // Check for power of 2
Index: libcfa/src/bits/debug.cfa
===================================================================
--- libcfa/src/bits/debug.cfa	(revision bdf22ae431e956481d293596f76b2f322345b749)
+++ libcfa/src/bits/debug.cfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
@@ -10,6 +10,6 @@
 // Created On       : Thu Mar 30 12:30:01 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 14 22:17:35 2019
-// Update Count     : 4
+// Last Modified On : Thu Nov 21 17:16:30 2019
+// Update Count     : 10
 //
 
@@ -28,5 +28,5 @@
 extern "C" {
 
-	void __cfaabi_dbg_bits_write( const char *in_buffer, int len ) {
+	void __cfaabi_bits_write( int fd, const char *in_buffer, int len ) {
 		// ensure all data is written
 		for ( int count = 0, retcode; count < len; count += retcode ) {
@@ -34,5 +34,5 @@
 
 			for ( ;; ) {
-				retcode = write( STDERR_FILENO, in_buffer, len - count );
+				retcode = write( fd, in_buffer, len - count );
 
 				// not a timer interrupt ?
@@ -44,21 +44,21 @@
 	}
 
-	void __cfaabi_dbg_bits_acquire() __attribute__((__weak__)) {}
-	void __cfaabi_dbg_bits_release() __attribute__((__weak__)) {}
+	void __cfaabi_bits_acquire() __attribute__((__weak__)) {}
+	void __cfaabi_bits_release() __attribute__((__weak__)) {}
 
-	void __cfaabi_dbg_bits_print_safe  ( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) )) {
+	void __cfaabi_bits_print_safe  ( int fd, const char fmt[], ... ) __attribute__(( format(printf, 2, 3) )) {
 		va_list args;
 
 		va_start( args, fmt );
-		__cfaabi_dbg_bits_acquire();
+		__cfaabi_bits_acquire();
 
 		int len = vsnprintf( buffer, buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( buffer, len );
+		__cfaabi_bits_write( fd, buffer, len );
 
-		__cfaabi_dbg_bits_release();
+		__cfaabi_bits_release();
 		va_end( args );
 	}
 
-	void __cfaabi_dbg_bits_print_nolock( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) )) {
+	void __cfaabi_bits_print_nolock( int fd, const char fmt[], ... ) __attribute__(( format(printf, 2, 3) )) {
 		va_list args;
 
@@ -66,15 +66,15 @@
 
 		int len = vsnprintf( buffer, buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( buffer, len );
+		__cfaabi_bits_write( fd, buffer, len );
 
 		va_end( args );
 	}
 
-	void __cfaabi_dbg_bits_print_vararg( const char fmt[], va_list args ) {
+	void __cfaabi_bits_print_vararg( int fd, const char fmt[], va_list args ) {
 		int len = vsnprintf( buffer, buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( buffer, len );
+		__cfaabi_bits_write( fd, buffer, len );
 	}
 
-	void __cfaabi_dbg_bits_print_buffer( char in_buffer[], int in_buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 3, 4) )) {
+	void __cfaabi_bits_print_buffer( int fd, char in_buffer[], int in_buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 4, 5) )) {
 		va_list args;
 
@@ -82,5 +82,5 @@
 
 		int len = vsnprintf( in_buffer, in_buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( in_buffer, len );
+		__cfaabi_bits_write( fd, in_buffer, len );
 
 		va_end( args );
Index: libcfa/src/bits/debug.hfa
===================================================================
--- libcfa/src/bits/debug.hfa	(revision bdf22ae431e956481d293596f76b2f322345b749)
+++ libcfa/src/bits/debug.hfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov 28 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 12:35:19 2018
-// Update Count     : 2
+// Last Modified On : Thu Nov 21 17:06:58 2019
+// Update Count     : 8
 //
 
@@ -38,11 +38,11 @@
 	#include <stdio.h>
 
-      extern void __cfaabi_dbg_bits_write( const char *buffer, int len );
-      extern void __cfaabi_dbg_bits_acquire();
-      extern void __cfaabi_dbg_bits_release();
-      extern void __cfaabi_dbg_bits_print_safe  ( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) ));
-      extern void __cfaabi_dbg_bits_print_nolock( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) ));
-      extern void __cfaabi_dbg_bits_print_vararg( const char fmt[], va_list arg );
-      extern void __cfaabi_dbg_bits_print_buffer( char buffer[], int buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 3, 4) ));
+	extern void __cfaabi_bits_write( int fd, const char *buffer, int len );
+	extern void __cfaabi_bits_acquire();
+	extern void __cfaabi_bits_release();
+	extern void __cfaabi_bits_print_safe  ( int fd, const char fmt[], ... ) __attribute__(( format(printf, 2, 3) ));
+	extern void __cfaabi_bits_print_nolock( int fd, const char fmt[], ... ) __attribute__(( format(printf, 2, 3) ));
+	extern void __cfaabi_bits_print_vararg( int fd, const char fmt[], va_list arg );
+	extern void __cfaabi_bits_print_buffer( int fd, char buffer[], int buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 4, 5) ));
 #ifdef __cforall
 }
@@ -50,12 +50,12 @@
 
 #ifdef __CFA_DEBUG_PRINT__
-	#define __cfaabi_dbg_write( buffer, len )         __cfaabi_dbg_bits_write( buffer, len )
-	#define __cfaabi_dbg_acquire()                    __cfaabi_dbg_bits_acquire()
-	#define __cfaabi_dbg_release()                    __cfaabi_dbg_bits_release()
-	#define __cfaabi_dbg_print_safe(...)              __cfaabi_dbg_bits_print_safe   (__VA_ARGS__)
-	#define __cfaabi_dbg_print_nolock(...)            __cfaabi_dbg_bits_print_nolock (__VA_ARGS__)
-	#define __cfaabi_dbg_print_buffer(...)            __cfaabi_dbg_bits_print_buffer (__VA_ARGS__)
-	#define __cfaabi_dbg_print_buffer_decl(...)       char __dbg_text[256]; int __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_dbg_bits_write( __dbg_text, __dbg_len );
-	#define __cfaabi_dbg_print_buffer_local(...)      __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_dbg_bits_write( __dbg_text, __dbg_len );
+	#define __cfaabi_dbg_write( buffer, len )         __cfaabi_bits_write( STDERR_FILENO, buffer, len )
+	#define __cfaabi_dbg_acquire()                    __cfaabi_bits_acquire()
+	#define __cfaabi_dbg_release()                    __cfaabi_bits_release()
+	#define __cfaabi_dbg_print_safe(...)              __cfaabi_bits_print_safe   (__VA_ARGS__)
+	#define __cfaabi_dbg_print_nolock(...)            __cfaabi_bits_print_nolock (__VA_ARGS__)
+	#define __cfaabi_dbg_print_buffer(...)            __cfaabi_bits_print_buffer (__VA_ARGS__)
+	#define __cfaabi_dbg_print_buffer_decl(...)       char __dbg_text[256]; int __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_bits_write( __dbg_text, __dbg_len );
+	#define __cfaabi_dbg_print_buffer_local(...)      __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_dbg_write( __dbg_text, __dbg_len );
 #else
 	#define __cfaabi_dbg_write(...)               ((void)0)
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision bdf22ae431e956481d293596f76b2f322345b749)
+++ libcfa/src/concurrency/kernel.cfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 20 17:21:23 2019
-// Update Count     : 25
+// Last Modified On : Thu Nov 21 16:46:59 2019
+// Update Count     : 27
 //
 
@@ -819,17 +819,17 @@
 	if(thrd) {
 		int len = snprintf( abort_text, abort_text_size, "Error occurred while executing thread %.256s (%p)", thrd->self_cor.name, thrd );
-		__cfaabi_dbg_bits_write( abort_text, len );
+		__cfaabi_bits_write( STDERR_FILENO, abort_text, len );
 
 		if ( &thrd->self_cor != thrd->curr_cor ) {
 			len = snprintf( abort_text, abort_text_size, " in coroutine %.256s (%p).\n", thrd->curr_cor->name, thrd->curr_cor );
-			__cfaabi_dbg_bits_write( abort_text, len );
+			__cfaabi_bits_write( STDERR_FILENO, abort_text, len );
 		}
 		else {
-			__cfaabi_dbg_bits_write( ".\n", 2 );
+			__cfaabi_bits_write( STDERR_FILENO, ".\n", 2 );
 		}
 	}
 	else {
 		int len = snprintf( abort_text, abort_text_size, "Error occurred outside of any thread.\n" );
-		__cfaabi_dbg_bits_write( abort_text, len );
+		__cfaabi_bits_write( STDERR_FILENO, abort_text, len );
 	}
 }
@@ -842,9 +842,9 @@
 
 extern "C" {
-	void __cfaabi_dbg_bits_acquire() {
+	void __cfaabi_bits_acquire() {
 		lock( kernel_debug_lock __cfaabi_dbg_ctx2 );
 	}
 
-	void __cfaabi_dbg_bits_release() {
+	void __cfaabi_bits_release() {
 		unlock( kernel_debug_lock );
 	}
Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision bdf22ae431e956481d293596f76b2f322345b749)
+++ libcfa/src/interpose.cfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar 29 16:10:31 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 14 22:57:16 2019
-// Update Count     : 116
+// Last Modified On : Thu Nov 21 16:47:02 2019
+// Update Count     : 118
 //
 
@@ -163,5 +163,5 @@
 	abort_lastframe = kernel_abort_lastframe();
 	len = snprintf( abort_text, abort_text_size, "Cforall Runtime error (UNIX pid:%ld) ", (long int)getpid() ); // use UNIX pid (versus getPid)
-	__cfaabi_dbg_bits_write( abort_text, len );
+	__cfaabi_dbg_write( abort_text, len );
 
 	if ( fmt ) {
@@ -171,8 +171,8 @@
 		len = vsnprintf( abort_text, abort_text_size, fmt, args );
 		va_end( args );
-		__cfaabi_dbg_bits_write( abort_text, len );
+		__cfaabi_dbg_write( abort_text, len );
 
 		if ( fmt[strlen( fmt ) - 1] != '\n' ) {		// add optional newline if missing at the end of the format text
-			__cfaabi_dbg_bits_write( "\n", 1 );
+			__cfaabi_dbg_write( "\n", 1 );
 		}
 	}
@@ -194,5 +194,5 @@
 	// find executable name
 	*index( messages[0], '(' ) = '\0';
-	__cfaabi_dbg_bits_print_nolock( "Stack back trace for: %s\n", messages[0]);
+	__cfaabi_bits_print_nolock( STDERR_FILENO, "Stack back trace for: %s\n", messages[0]);
 
 	for ( int i = Start; i < size - abort_lastframe && messages != NULL; i += 1 ) {
@@ -200,5 +200,5 @@
 
 		for ( char * p = messages[i]; *p; ++p ) {
-			//__cfaabi_dbg_bits_print_nolock( "X %s\n", p);
+			//__cfaabi_bits_print_nolock( "X %s\n", p);
 			// find parantheses and +offset
 			if ( *p == '(' ) {
@@ -220,7 +220,7 @@
 			*offset_end++ = '\0';
 
-			__cfaabi_dbg_bits_print_nolock( "(%i) %s : %s + %s %s\n", frameNo, messages[i], name, offset_begin, offset_end);
+			__cfaabi_bits_print_nolock( STDERR_FILENO, "(%i) %s : %s + %s %s\n", frameNo, messages[i], name, offset_begin, offset_end);
 		} else {										// otherwise, print the whole line
-			__cfaabi_dbg_bits_print_nolock( "(%i) %s\n", frameNo, messages[i] );
+			__cfaabi_bits_print_nolock( STDERR_FILENO, "(%i) %s\n", frameNo, messages[i] );
 		}
 	}
