Index: stable/HeuristicLab.DebugEngine/3.3/DebugEngine.cs
===================================================================
--- stable/HeuristicLab.DebugEngine/3.3/DebugEngine.cs	(revision 15392)
+++ stable/HeuristicLab.DebugEngine/3.3/DebugEngine.cs	(revision 15393)
@@ -308,5 +308,5 @@
           CurrentOperation = null;
         } catch (Exception ex) {
-          if (ex is OperationCanceledException) throw ex;
+          if (ex is OperationCanceledException) throw;
           else throw new OperatorExecutionException(operation.Operator, ex);
         }
Index: stable/HeuristicLab.ParallelEngine/3.3/ParallelEngine.cs
===================================================================
--- stable/HeuristicLab.ParallelEngine/3.3/ParallelEngine.cs	(revision 15392)
+++ stable/HeuristicLab.ParallelEngine/3.3/ParallelEngine.cs	(revision 15393)
@@ -101,19 +101,10 @@
             try {
               Parallel.ForEach(stacks, parallelOptions, Run);
-            }
-            catch (OperationCanceledException ex) {
-              OperationCollection remaining = new OperationCollection() { Parallel = true };
-              for (int i = 0; i < stacks.Length; i++) {
-                if (stacks[i].Count == 1)
-                  remaining.Add(stacks[i].Pop());
-                if (stacks[i].Count > 1) {
-                  OperationCollection ops = new OperationCollection();
-                  while (stacks[i].Count > 0)
-                    ops.Add(stacks[i].Pop());
-                  remaining.Add(ops);
-                }
-              }
-              if (remaining.Count > 0) executionStack.Push(remaining);
-              throw ex;
+            } catch (OperationCanceledException) {
+              RepairStack(executionStack, stacks);
+              throw;
+            } catch (AggregateException) {
+              RepairStack(executionStack, stacks);
+              throw;
             }
           } else {
@@ -128,17 +119,26 @@
           catch (Exception ex) {
             executionStack.Push(operation);
-            if (ex is OperationCanceledException) throw ex;
+            if (ex is OperationCanceledException) throw;
             else throw new OperatorExecutionException(operation.Operator, ex);
           }
           if (next != null) executionStack.Push(next);
-
-          if (operation.Operator.Breakpoint) {
-            string message = string.Format("Breakpoint: {0}", operation.Operator.Name != string.Empty ? operation.Operator.Name : operation.Operator.ItemName);
-            Log.LogMessage(message);
-            throw new OperationCanceledException(message);
-          }
         }
       }
     }
+
+    private static void RepairStack(Stack<IOperation> executionStack, Stack<IOperation>[] parallelExecutionStacks) {
+      OperationCollection remaining = new OperationCollection() { Parallel = true };
+      for (int i = 0; i < parallelExecutionStacks.Length; i++) {
+        if (parallelExecutionStacks[i].Count == 1)
+          remaining.Add(parallelExecutionStacks[i].Pop());
+        if (parallelExecutionStacks[i].Count > 1) {
+          OperationCollection ops = new OperationCollection();
+          while (parallelExecutionStacks[i].Count > 0)
+            ops.Add(parallelExecutionStacks[i].Pop());
+          remaining.Add(ops);
+        }
+      }
+      if (remaining.Count > 0) executionStack.Push(remaining);
+    }
   }
 }
Index: stable/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs
===================================================================
--- stable/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs	(revision 15392)
+++ stable/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs	(revision 15393)
@@ -62,13 +62,8 @@
           catch (Exception ex) {
             ExecutionStack.Push(operation);
-            if (ex is OperationCanceledException) throw ex;
+            if (ex is OperationCanceledException) throw;
             else throw new OperatorExecutionException(operation.Operator, ex);
           }
           if (next != null) ExecutionStack.Push(next);
-
-          if (operation.Operator.Breakpoint) {
-            Log.LogMessage(string.Format("Breakpoint: {0}", operation.Operator.Name != string.Empty ? operation.Operator.Name : operation.Operator.ItemName));
-            Pause();
-          }
         }
       }
