summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-12-21 11:49:11 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-12-21 11:49:11 +0000
commitd8334d807812e40f67770ffc37608c0ce66f96b2 (patch)
treed662de9e4768b0c95ad26c1a643fc772c5d7f739 /rts
parent2ddefb59504d81ba534b747260d32617b3bcc192 (diff)
downloadhaskell-d8334d807812e40f67770ffc37608c0ce66f96b2.tar.gz
releaseCapabilityAndQueueWorker: task->stopped should be false (#4850)
Diffstat (limited to 'rts')
-rw-r--r--rts/Capability.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/rts/Capability.c b/rts/Capability.c
index 82343597ed..345bd39c0f 100644
--- a/rts/Capability.c
+++ b/rts/Capability.c
@@ -456,12 +456,16 @@ releaseCapabilityAndQueueWorker (Capability* cap USED_IF_THREADS)
task = cap->running_task;
+ // If the Task is stopped, we shouldn't be yielding, we should
+ // be just exiting.
+ ASSERT(!task->stopped);
+
// If the current task is a worker, save it on the spare_workers
// list of this Capability. A worker can mark itself as stopped,
// in which case it is not replaced on the spare_worker queue.
// This happens when the system is shutting down (see
// Schedule.c:workerStart()).
- if (!isBoundTask(task) && !task->stopped)
+ if (!isBoundTask(task))
{
if (cap->n_spare_workers < MAX_SPARE_WORKERS)
{