diff --git a/run-exp.py b/run-exp.py
index c1c131237e333ad9fae1f8acc3cddf7bf9325e77..f9072d7ebcb344adca06619b7cbde6af72d4d76a 100755
--- a/run-exp.py
+++ b/run-exp.py
@@ -110,11 +110,15 @@ class Task:
                 cwd = self._work_dir,
                 timeout = 3600,  # FIXME
             )
+
+            return False
         except subprocess.TimeoutExpired:
             print()
             print("Task timed out!")
             print()
 
+            return True
+
     @classmethod
     def from_dict(cls, data):
         name = data.get("name", "Unnamed Task")
@@ -194,10 +198,16 @@ def main(config_file):
 
         for rep in range(c.repetitions):
             print(f"Repetition {rep}")
+            timed_out = False
+
             for task in c.tasks:
                 print(f"Running task {task.name}")
-                task.run(variables)
+                timed_out = task.run(variables)
             print()
 
+            if timed_out:  # repetitions are useless if tasks time out
+                break
+
+
 if __name__ == "__main__":
     main()