[Bf-blender-cvs] [18c2a44333] master: Fix ugly mistake in BLI_task - freeing while some tasks are still being processed.
Bastien Montagne
noreply at git.blender.org
Fri Mar 3 17:18:58 CET 2017
Commit: 18c2a443336dea839c028dcc98f8021b98c2a5ca
Author: Bastien Montagne
Date: Fri Mar 3 17:12:03 2017 +0100
Branches: master
https://developer.blender.org/rB18c2a443336dea839c028dcc98f8021b98c2a5ca
Fix ugly mistake in BLI_task - freeing while some tasks are still being processed.
Freeing pool was calling `BLI_task_pool_stop()`, which only clears
pool's tasks that are in TODO queue, whithout ensuring no more tasks
from that pool are being processed in worker threads.
This could lead to use-after-free random (and seldom) crashes.
Now use instead `BLI_task_pool_cancel()`, which does waits for all tasks
being processed to finish, before returning.
===================================================================
M source/blender/blenlib/intern/task.c
===================================================================
diff --git a/source/blender/blenlib/intern/task.c b/source/blender/blenlib/intern/task.c
index 5286e6ffb9..359360d59c 100644
--- a/source/blender/blenlib/intern/task.c
+++ b/source/blender/blenlib/intern/task.c
@@ -565,7 +565,7 @@ TaskPool *BLI_task_pool_create_background(TaskScheduler *scheduler, void *userda
void BLI_task_pool_free(TaskPool *pool)
{
- BLI_task_pool_stop(pool);
+ BLI_task_pool_cancel(pool);
BLI_mutex_end(&pool->num_mutex);
BLI_condition_end(&pool->num_cond);
More information about the Bf-blender-cvs
mailing list