X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FCapability.c;h=345bd39c0fb9560a555d3bb32caf20241b4e1f21;hb=8625c675de45bdb8bcfa795572ce7c47687c147c;hp=82343597ed1260a5f50bcd42a24a498b810fab42;hpb=150ac5e907ec5096660f90caaa5f076da181d81b;p=ghc-hetmet.git diff --git a/rts/Capability.c b/rts/Capability.c index 8234359..345bd39 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) {