diff --git a/elk-reasoner/src/main/java/org/semanticweb/elk/reasoner/stages/AbstractReasonerState.java b/elk-reasoner/src/main/java/org/semanticweb/elk/reasoner/stages/AbstractReasonerState.java
index <HASH>..<HASH> 100644
--- a/elk-reasoner/src/main/java/org/semanticweb/elk/reasoner/stages/AbstractReasonerState.java
+++ b/elk-reasoner/src/main/java/org/semanticweb/elk/reasoner/stages/AbstractReasonerState.java
@@ -905,11 +905,16 @@ public abstract class AbstractReasonerState extends SimpleInterrupter {
 	}
 
 	@Override
-	public synchronized void setInterrupt(boolean flag) {
-		super.setInterrupt(flag);
+	public void setInterrupt(boolean flag) {
 		ReasonerStageExecutor stageExecutor = getStageExecutor();
-		if (stageExecutor != null)
-			stageExecutor.setInterrupt(flag);
+		if (stageExecutor != null) {
+			synchronized (stageExecutor) {
+				super.setInterrupt(flag);
+				stageExecutor.setInterrupt(flag);
+			}
+		} else {
+			super.setInterrupt(flag);
+		}
 		// this flag will be cleared after ElkInterruptedException is thrown
 	}
Fix the bug introduced by the previous commit

where interrupt() was synchronized on the same object as the reasoning methods,
which effectively prevented interruption.