diff options
Diffstat (limited to 'rts')
-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) { |