Fix bug in popRunQueue
authorSimon Marlow <marlowsd@gmail.com>
Tue, 6 Apr 2010 09:14:53 +0000 (09:14 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 6 Apr 2010 09:14:53 +0000 (09:14 +0000)
rts/Schedule.h

index 1e786ce..7760e36 100644 (file)
@@ -155,7 +155,9 @@ popRunQueue (Capability *cap)
     StgTSO *t = cap->run_queue_hd;
     ASSERT(t != END_TSO_QUEUE);
     cap->run_queue_hd = t->_link;
-    cap->run_queue_hd->block_info.prev = END_TSO_QUEUE;
+    if (t->_link != END_TSO_QUEUE) {
+        t->_link->block_info.prev = END_TSO_QUEUE;
+    }
     t->_link = END_TSO_QUEUE; // no write barrier req'd
     if (cap->run_queue_hd == END_TSO_QUEUE) {
        cap->run_queue_tl = END_TSO_QUEUE;