summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2022-11-29 13:41:56 +0100
committerRémi Verschelde <rverschelde@gmail.com>2022-11-29 13:41:56 +0100
commit6fdbf79046b6404331017c53044507e639efdcc3 (patch)
tree53454e94ea333bebcad62fcfc3c6a1d1b367b4ac /core
parent610c34ea035d5e7d11c1be66f42334b6bed145fc (diff)
parent4cc3489bc02a94e21145d8ec5910d65f591689ee (diff)
Merge pull request #67680 from haasanen/fix_physics_thread_race_condition
Fix physics/3d/run_on_separate_thread race condition in WorkerThreadPool (crash).
Diffstat (limited to 'core')
-rw-r--r--core/object/worker_thread_pool.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/core/object/worker_thread_pool.cpp b/core/object/worker_thread_pool.cpp
index 9b3dc6833e..0218a4c8f6 100644
--- a/core/object/worker_thread_pool.cpp
+++ b/core/object/worker_thread_pool.cpp
@@ -402,7 +402,9 @@ void WorkerThreadPool::wait_for_group_task_completion(GroupID p_group) {
}
}
- groups.erase(p_group); // Threads do not access this, so safe to erase here.
+ task_mutex.lock(); // This mutex is needed when Physics 2D and/or 3D is selected to run on a separate thread.
+ groups.erase(p_group);
+ task_mutex.unlock();
}
void WorkerThreadPool::init(int p_thread_count, bool p_use_native_threads_low_priority, float p_low_priority_task_ratio) {