diff options
author | Simon Marlow <marlowsd@gmail.com> | 2010-12-21 11:49:11 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2010-12-21 11:49:11 +0000 |
commit | d8334d807812e40f67770ffc37608c0ce66f96b2 (patch) | |
tree | d662de9e4768b0c95ad26c1a643fc772c5d7f739 /rts/Capability.c | |
parent | 2ddefb59504d81ba534b747260d32617b3bcc192 (diff) | |
download | haskell-d8334d807812e40f67770ffc37608c0ce66f96b2.tar.gz |
releaseCapabilityAndQueueWorker: task->stopped should be false (#4850)
Diffstat (limited to 'rts/Capability.c')
-rw-r--r-- | rts/Capability.c | 6 |
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) { |