diff options
Diffstat (limited to 'rts/Task.c')
| -rw-r--r-- | rts/Task.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/rts/Task.c b/rts/Task.c index c8cd9c4a2c..ef20c09a6e 100644 --- a/rts/Task.c +++ b/rts/Task.c @@ -74,9 +74,19 @@ initTaskManager (void) void stopTaskManager (void) { + Task *task, *next; + debugTrace(DEBUG_sched, "stopping task manager, %d tasks still running", tasksRunning); + + ACQUIRE_LOCK(&sched_mutex); + for (task = task_free_list; task != NULL; next) { + next = task->next; + stgFree(task); + } + task_free_list = NULL; + RELEASE_LOCK(&sched_mutex); } |
