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/889930
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#532684}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 7c742b6ec9b635a42b37df65efb28d30f9cc8fcb
diff --git a/tools/gn/header_checker.cc b/tools/gn/header_checker.cc
index d4fb6f7..ac8214b 100644
--- a/tools/gn/header_checker.cc
+++ b/tools/gn/header_checker.cc
@@ -155,6 +155,7 @@
for (const auto& vect_i : file.second) {
if (vect_i.target->check_includes()) {
+ task_count_.Increment();
base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()},
base::BindOnce(&HeaderChecker::DoWork, this,
vect_i.target, file.first));
@@ -581,4 +582,3 @@
return Err(CreatePersistentRange(source_file, range),
"Include not allowed.", msg);
}
-