Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision b8b0de0cd33b489cfb170e2fdf66200204ba18a8)
+++ libcfa/src/concurrency/kernel.cfa	(revision 8c43d057d111f2fcf5e0f249ebd90796a8a2fa2d)
@@ -624,30 +624,24 @@
 // Unexpected Terminating logic
 //=============================================================================================
-static __spinlock_t kernel_abort_lock;
-static bool kernel_abort_called = false;
+
+extern "C" {
+	extern void __cfaabi_real_abort(void);
+}
+static volatile bool kernel_abort_called = false;
 
 void * kernel_abort(void) __attribute__ ((__nothrow__)) {
 	// abort cannot be recursively entered by the same or different processors because all signal handlers return when
 	// the globalAbort flag is true.
-	lock( kernel_abort_lock __cfaabi_dbg_ctx2 );
+	bool first = __atomic_test_and_set( &kernel_abort_called, __ATOMIC_SEQ_CST);
+
+	// first task to abort ?
+	if ( !first ) {
+		// We aren't the first to abort.
+		// I give up, just let C handle it
+		__cfaabi_real_abort();
+	}
 
 	// disable interrupts, it no longer makes sense to try to interrupt this processor
 	disable_interrupts();
-
-	// first task to abort ?
-	if ( kernel_abort_called ) {			// not first task to abort ?
-		unlock( kernel_abort_lock );
-
-		sigset_t mask;
-		sigemptyset( &mask );
-		sigaddset( &mask, SIGALRM );		// block SIGALRM signals
-		sigaddset( &mask, SIGUSR1 );		// block SIGALRM signals
-		sigsuspend( &mask );				// block the processor to prevent further damage during abort
-		_exit( EXIT_FAILURE );				// if processor unblocks before it is killed, terminate it
-	}
-	else {
-		kernel_abort_called = true;
-		unlock( kernel_abort_lock );
-	}
 
 	return __cfaabi_tls.this_thread;
Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision b8b0de0cd33b489cfb170e2fdf66200204ba18a8)
+++ libcfa/src/interpose.cfa	(revision 8c43d057d111f2fcf5e0f249ebd90796a8a2fa2d)
@@ -284,4 +284,10 @@
 }
 
+extern "C" {
+	void __cfaabi_real_abort(void) {
+		__cabi_libc.abort();
+	}
+}
+
 void sigHandler_segv( __CFA_SIGPARMS__ ) {
 		if ( sfp->si_addr == 0p ) {
