瀏覽代碼

Merge pull request #67680 from haasanen/fix_physics_thread_race_condition

Fix physics/3d/run_on_separate_thread race condition in WorkerThreadPool (crash).
Rémi Verschelde 2 年之前
父節點
當前提交
6fdbf79046
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      core/object/worker_thread_pool.cpp

+ 3 - 1
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) {
 void WorkerThreadPool::init(int p_thread_count, bool p_use_native_threads_low_priority, float p_low_priority_task_ratio) {