[project @ 2005-05-09 10:18:05 by simonmar]
authorsimonmar <unknown>
Mon, 9 May 2005 10:18:05 +0000 (10:18 +0000)
committersimonmar <unknown>
Mon, 9 May 2005 10:18:05 +0000 (10:18 +0000)
printAllThreads: handle ThreadRelocated

ghc/rts/Schedule.c

index ad27b74..7075b20 100644 (file)
@@ -4160,7 +4160,7 @@ printAllThreads(void)
   debugBelch("all threads:\n");
 # endif
 
-  for (t = all_threads; t != END_TSO_QUEUE; t = t->global_link) {
+  for (t = all_threads; t != END_TSO_QUEUE; ) {
     debugBelch("\tthread %d @ %p ", t->id, (void *)t);
 #if defined(DEBUG)
     {
@@ -4168,8 +4168,14 @@ printAllThreads(void)
       if (label) debugBelch("[\"%s\"] ",(char *)label);
     }
 #endif
-    printThreadStatus(t);
-    debugBelch("\n");
+    if (t->what_next == ThreadRelocated) {
+       debugBelch("has been relocated...\n");
+       t = t->link;
+    } else {
+       printThreadStatus(t);
+       debugBelch("\n");
+       t = t->global_link;
+    }
   }
 }