Index: src/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision 9d32bc86c89192f045f63ab03470624c0d60be7f)
+++ src/libcfa/concurrency/preemption.c	(revision fb16d5c2233951d7eeba58c1cb3de31029d98a82)
@@ -404,4 +404,23 @@
 }
 
+//=============================================================================================
+// Kernel Signal Debug
+//=============================================================================================
+
+void __cfaabi_check_preemption() {
+	bool ready = TL_GET( preemption_state ).enabled;
+	if(!ready) { abort("Preemption should be ready"); }
+
+	sigset_t oldset;
+	int ret;
+	ret = sigprocmask(0, NULL, &oldset);
+	if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
+
+	ret = sigismember(&oldset, SIGUSR1);
+	if(ret <  0) { abort("ERROR sigismember returned %d", ret); }
+
+	if(ret == 1) { abort("ERROR SIGUSR1 is disabled"); }
+}
+
 // Local Variables: //
 // mode: c //
Index: src/tests/concurrent/preempt.c
===================================================================
--- src/tests/concurrent/preempt.c	(revision 9d32bc86c89192f045f63ab03470624c0d60be7f)
+++ src/tests/concurrent/preempt.c	(revision fb16d5c2233951d7eeba58c1cb3de31029d98a82)
@@ -17,4 +17,6 @@
 #endif
 
+extern void __cfaabi_check_preemption();
+
 static volatile int counter = 0;
 
@@ -29,8 +31,13 @@
 void main(worker_t & this) {
 	while(counter < N) {
+		__cfaabi_check_preemption();
 		if( (counter % 7) == this.value ) {
+			__cfaabi_check_preemption();
 			int next = __atomic_add_fetch_4(&counter, 1, __ATOMIC_SEQ_CST);
+			__cfaabi_check_preemption();
 			if( (next % 100) == 0 ) printf("%d\n", (int)next);
+			__cfaabi_check_preemption();
 		}
+		__cfaabi_check_preemption();
 	}
 }
