Commit 3f82e352 authored by Simon Marlow's avatar Simon Marlow

freeTaskManager: don't free Tasks that are still in use

See conc059.
parent ca8ac445
......@@ -84,12 +84,18 @@ freeTaskManager (void)
ACQUIRE_LOCK(&sched_mutex);
for (task = all_tasks; task != NULL; task = next) {
next = task->all_link;
if (task->stopped) {
// We only free resources if the Task is not in use. A
// Task may still be in use if we have a Haskell thread in
// a foreign call while we are attempting to shut down the
// RTS (see conc059).
#if defined(THREADED_RTS)
closeCondition(&task->cond);
closeMutex(&task->lock);
closeCondition(&task->cond);
closeMutex(&task->lock);
#endif
next = task->all_link;
stgFree(task);
stgFree(task);
}
}
all_tasks = NULL;
task_free_list = NULL;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment