Commit 7c742b6e authored by Tom Anderson's avatar Tom Anderson Committed by Commit Bot

Fix 'gn gen --check' hanging indefinitely

r531270 refactored HeaderChecker to use an atomic counter to track the number of
header-checking tasks.  The main thread waits on the task count becoming zero,
and the task counter is decremented whenever a task completes.  However, the
main thread didn't increment the task counter when it created a task, so the
counter would count into negative values and never reach zero, hanging gn
indefinitely.  The fix is to increment the counter when posting a task.

R=dpranke
CC=fdoray

Change-Id: Id55f943cf0e2af3e9e5af5f3dddf8a7b7671eaac
Reviewed-on: https://chromium-review.googlesource.com/889930Reviewed-by: default avatarDirk Pranke <dpranke@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532684}
parent acd86d94
...@@ -155,6 +155,7 @@ void HeaderChecker::RunCheckOverFiles(const FileMap& files, bool force_check) { ...@@ -155,6 +155,7 @@ void HeaderChecker::RunCheckOverFiles(const FileMap& files, bool force_check) {
for (const auto& vect_i : file.second) { for (const auto& vect_i : file.second) {
if (vect_i.target->check_includes()) { if (vect_i.target->check_includes()) {
task_count_.Increment();
base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()}, base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()},
base::BindOnce(&HeaderChecker::DoWork, this, base::BindOnce(&HeaderChecker::DoWork, this,
vect_i.target, file.first)); vect_i.target, file.first));
...@@ -581,4 +582,3 @@ Err HeaderChecker::MakeUnreachableError( ...@@ -581,4 +582,3 @@ Err HeaderChecker::MakeUnreachableError(
return Err(CreatePersistentRange(source_file, range), return Err(CreatePersistentRange(source_file, range),
"Include not allowed.", msg); "Include not allowed.", msg);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment