sim: draining bug for fast-forwaring multiple cores
fix draining bug where multiple cores hit max_insts_any_thread simultaneously

Committed by: Nilay Vaish <nilay@cs.wisc.edu>
diff --git a/src/python/m5/simulate.py b/src/python/m5/simulate.py
index 8529a74..5673e26 100644
--- a/src/python/m5/simulate.py
+++ b/src/python/m5/simulate.py
@@ -184,7 +184,11 @@
         # If we've got some objects that can't drain immediately, then simulate
         if unready_objs > 0:
             dm.setCount(unready_objs)
-            simulate()
+            #WARNING: if a valid exit event occurs while draining, it will not
+            # get returned to the user script
+            exit_event = simulate()
+            while exit_event.getCause() != 'Finished drain':
+                exit_event = simulate()
         else:
             all_drained = True
         internal.drain.cleanupDrainManager(dm)