Index: libcfa/src/concurrency/locks.hfa
===================================================================
--- libcfa/src/concurrency/locks.hfa	(revision eaf269d21f42f861fd9f29749c414742326bf919)
+++ libcfa/src/concurrency/locks.hfa	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
@@ -177,4 +177,5 @@
 };
 
+static inline void ?{}(fast_lock & this) __attribute__((deprecated("use linear_backoff_then_block_lock instead")));
 static inline void ?{}(fast_lock & this) { this.owner = 0p; }
 
@@ -184,5 +185,5 @@
 }
 
-static inline void lock( fast_lock & this ) __attribute__((artificial));
+static inline void lock( fast_lock & this ) __attribute__((deprecated("use linear_backoff_then_block_lock instead"), artificial));
 static inline void lock( fast_lock & this ) {
 	thread$ * thrd = active_thread();
@@ -195,5 +196,5 @@
 }
 
-static inline bool try_lock( fast_lock & this ) __attribute__((artificial));
+static inline bool try_lock( fast_lock & this ) __attribute__((deprecated("use linear_backoff_then_block_lock instead"), artificial));
 static inline bool try_lock ( fast_lock & this ) {
 	thread$ * thrd = active_thread();
@@ -202,5 +203,5 @@
 }
 
-static inline thread$ * unlock( fast_lock & this ) __attribute__((artificial));
+static inline thread$ * unlock( fast_lock & this ) __attribute__((deprecated("use linear_backoff_then_block_lock instead"), artificial));
 static inline thread$ * unlock( fast_lock & this ) {
 	/* paranoid */ verify(active_thread() == this.owner);
Index: tests/meta/.expect/dumpable.txt
===================================================================
--- tests/meta/.expect/dumpable.txt	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
+++ tests/meta/.expect/dumpable.txt	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
@@ -0,0 +1,1 @@
+Done
Index: tests/meta/dumpable.cfa
===================================================================
--- tests/meta/dumpable.cfa	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
+++ tests/meta/dumpable.cfa	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
@@ -0,0 +1,114 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// dumpable.cfa -- Check if everything looks correctly set to dump core
+//
+// Author           : Thierry Delisle
+// Created On       : Wed Jan 05 13:53:22 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+#include <limits.h>
+#include <errno.h>
+
+#include <fstream.hfa>
+
+extern "C" {
+	#include <sys/prctl.h>
+	#include <sys/resource.h>
+	#include <sys/statvfs.h>
+	#include <unistd.h>
+}
+
+void check_ulimit() {
+	struct rlimit rlp;
+	getrlimit(RLIMIT_CORE, &rlp);
+	if(rlp.rlim_cur < 536870912) {
+		serr | "Soft core limit is less than ~500Mb: " | rlp.rlim_cur;
+	}
+
+	if(rlp.rlim_max < 536870912) {
+		serr | "Hard core limit is less than ~500Mb: " | rlp.rlim_max;
+	}
+}
+
+void check_permission() {
+	{
+		char myExe[PATH_MAX];
+		ssize_t n = readlink("/proc/self/exe", myExe, sizeof(myExe));
+		if (n < 0) {
+			perror("readlink(/proc/self/exe) error");
+			return 1;
+		}
+		myExe[n] = '\0';
+
+		if(int r = access(myExe, F_OK); r != 0) serr | "Expected current executable does not exist!" | r | errno;
+		if(int r = access(myExe, R_OK); r != 0) serr | "No read access for current executable" | r | errno;
+	}
+
+	{
+		char myCwd[PATH_MAX];
+		if (getcwd(myCwd, sizeof(myCwd)) == 0p) {
+			perror("getcwd() error");
+			return;
+		}
+
+		if(access(myCwd, F_OK) != 0) serr | "Expected current working directory does not exist!";
+		if(access(myCwd, R_OK) != 0) serr | "No read access for current working directory";
+		if(access(myCwd, W_OK) != 0) serr | "No write access for current working directory";
+	}
+}
+
+void check_free_space() {
+	struct statvfs buf;
+	if(statvfs(".", &buf) != 0) {
+		perror("statvfs() error");
+		return;
+	}
+
+	if((buf.f_bsize * buf.f_bavail) < 536870912) {
+		serr | "Available diskspace is less than ~500Mb: " | (buf.f_bsize * buf.f_bavail);
+	}
+
+	if(buf.f_favail < 10) {
+		serr | "Available inodes is less than 10: " | buf.f_favail;
+	}
+
+	if(buf.f_flag & ST_RDONLY) {
+		serr | "Filesystem is read only";
+	}
+}
+
+void check_noconflict() {
+	char * name = "./core";
+	if(access("./core", F_OK) == 0) serr | "A file of the core name ('" | name | "') already exists";
+}
+
+void check_dumpflag() {
+	int r = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0);
+	if(r < 0) {
+		perror("prctl(PR_GET_DUMPABLE) error");
+		return;
+	}
+
+	if(r != 1) serr | "dumpable attribute not set to 1 \"(SUID_DUMP_USER, process is dumpable)\", was" | r;
+}
+
+int main() {
+	check_ulimit();
+
+	check_permission();
+
+	check_free_space();
+
+	check_noconflict();
+
+	check_dumpflag();
+
+	sout | "Done";
+}
Index: sts/unified_locking/.expect/fast.txt
===================================================================
--- tests/unified_locking/.expect/fast.txt	(revision eaf269d21f42f861fd9f29749c414742326bf919)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: sts/unified_locking/fast.cfa
===================================================================
--- tests/unified_locking/fast.cfa	(revision eaf269d21f42f861fd9f29749c414742326bf919)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK fast_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/unified_locking/mutex_test.hfa
===================================================================
--- tests/unified_locking/mutex_test.hfa	(revision eaf269d21f42f861fd9f29749c414742326bf919)
+++ tests/unified_locking/mutex_test.hfa	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
@@ -10,4 +10,5 @@
 	thread$ * id;
 	uint32_t sum;
+	uint32_t cnt;
 };
 
@@ -27,8 +28,10 @@
 	{
 		uint32_t tsum = mo.sum;
+		uint32_t cnt = mo.cnt;
 		mo.id = me;
 		yield(random(5));
 		value = ((uint32_t)random()) ^ ((uint32_t)me);
 		if(mo.id != me) sout | "Intruder!";
+		mo.cnt = cnt + 1;
 		mo.sum = tsum + value;
 	}
@@ -54,4 +57,5 @@
 	uint32_t sum = -32;
 	mo.sum = -32;
+	mo.cnt = 0;
 	processor p[2];
 	sout | "Starting";
@@ -63,4 +67,5 @@
 	}
 	sout | "Done!";
+	if(mo.cnt != (13 * num_times)) sout | "Invalid cs count!" | mo.cnt | "vs "| (13 * num_times) | "(13 *" | num_times | ')';
 	if(sum == mo.sum) sout | "Match!";
 	else sout | "No Match!" | sum | "vs" | mo.sum;
Index: tests/zombies/fastlock.cfa
===================================================================
--- tests/zombies/fastlock.cfa	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
+++ tests/zombies/fastlock.cfa	(revision 6fafda8b82ee096d785c1ff4fba1f1abe4f14324)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK fast_lock
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
