Просмотр исходного кода

accessed to tag->state have to be protected

Cédric Augonnet лет назад: 16
Родитель
Сommit
34bffe6fe3
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      src/core/jobs.c

+ 7 - 2
src/core/jobs.c

@@ -161,16 +161,21 @@ static unsigned not_all_task_deps_are_fulfilled(job_t j)
 
 	struct tag_s *tag = j->tag;
 
+	take_mutex(&tag->lock);
+
 	if (tag->ndeps != tag->ndeps_completed)
 	{
 		tag->state = BLOCKED;
-		return 1;
+		ret = 1;
 	}
 	else {
 		/* existing deps (if any) are fulfilled */
 		tag->state = READY;
-		return 0;
+		ret = 0;
 	}
+
+	release_mutex(&tag->lock);
+	return ret;
 }
 
 static unsigned enforce_deps_and_schedule(job_t j)