Index: benchmark/io/http/protocol.cfa
===================================================================
--- benchmark/io/http/protocol.cfa	(revision 02b73ea0deb52150e03b52873253e63aa0be7d38)
+++ benchmark/io/http/protocol.cfa	(revision 35ea4f33811f564594a8a11b8c003adbeca7973b)
@@ -104,4 +104,5 @@
 			if( errno == EAGAIN || errno == EWOULDBLOCK) continue READ;
 			if( errno == ECONNRESET ) return [E408, true, 0, 0];
+			if( errno == EPIPE ) return [E408, true, 0, 0];
 			abort( "read error: (%d) %s\n", (int)errno, strerror(errno) );
 		}
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 02b73ea0deb52150e03b52873253e63aa0be7d38)
+++ libcfa/src/concurrency/kernel.cfa	(revision 35ea4f33811f564594a8a11b8c003adbeca7973b)
@@ -633,5 +633,5 @@
 	// abort cannot be recursively entered by the same or different processors because all signal handlers return when
 	// the globalAbort flag is true.
-	bool first = __atomic_test_and_set( &kernel_abort_called, __ATOMIC_SEQ_CST);
+	bool first = !__atomic_test_and_set( &kernel_abort_called, __ATOMIC_SEQ_CST);
 
 	// first task to abort ?
Index: libcfa/src/concurrency/mutex.hfa
===================================================================
--- libcfa/src/concurrency/mutex.hfa	(revision 02b73ea0deb52150e03b52873253e63aa0be7d38)
+++ libcfa/src/concurrency/mutex.hfa	(revision 35ea4f33811f564594a8a11b8c003adbeca7973b)
@@ -42,9 +42,9 @@
 };
 
-void ?{}(mutex_lock & this);
-void ^?{}(mutex_lock & this);
-void lock(mutex_lock & this);
-bool try_lock(mutex_lock & this);
-void unlock(mutex_lock & this);
+void ?{}(mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void ^?{}(mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void lock(mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+bool try_lock(mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void unlock(mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
 
 // Exclusive lock - recursive
@@ -64,9 +64,9 @@
 };
 
-void ?{}(recursive_mutex_lock & this);
-void ^?{}(recursive_mutex_lock & this);
-void lock(recursive_mutex_lock & this);
-bool try_lock(recursive_mutex_lock & this);
-void unlock(recursive_mutex_lock & this);
+void ?{}(recursive_mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void ^?{}(recursive_mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void lock(recursive_mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+bool try_lock(recursive_mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void unlock(recursive_mutex_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
 
 trait is_lock(dtype L | sized(L)) {
@@ -86,14 +86,14 @@
 };
 
-void ?{}(condition_variable & this);
-void ^?{}(condition_variable & this);
+void ?{}(condition_variable & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void ^?{}(condition_variable & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
 
-void notify_one(condition_variable & this);
-void notify_all(condition_variable & this);
+void notify_one(condition_variable & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
+void notify_all(condition_variable & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
 
-void wait(condition_variable & this);
+void wait(condition_variable & this) __attribute__((deprecated("use concurrency/locks.hfa instead")));
 
 forall(dtype L | is_lock(L))
-void wait(condition_variable & this, L & l);
+void wait(condition_variable & this, L & l) __attribute__((deprecated("use concurrency/locks.hfa instead")));
 
 //-----------------------------------------------------------------------------
