diff --git a/tools/gn/function_exec_script.cc b/tools/gn/function_exec_script.cc
index 8c4909c..139b811 100644
--- a/tools/gn/function_exec_script.cc
+++ b/tools/gn/function_exec_script.cc
@@ -7,6 +7,7 @@
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/threading/thread_restrictions.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
 #include "tools/gn/err.h"
@@ -115,6 +116,9 @@
   exec_script("//foo/bar/myscript.py")
 )";
 
+class ExecScriptScopedAllowBaseSyncPrimitives
+    : public base::ScopedAllowBaseSyncPrimitives {};
+
 Value RunExecScript(Scope* scope,
                     const FunctionCallNode* function,
                     const std::vector<Value>& args,
@@ -221,11 +225,15 @@
   std::string output;
   std::string stderr_output;
   int exit_code = 0;
-  if (!internal::ExecProcess(
-          cmdline, startup_dir, &output, &stderr_output, &exit_code)) {
-    *err = Err(function->function(), "Could not execute python.",
-        "I was trying to execute \"" + FilePathToUTF8(python_path) + "\".");
-    return Value();
+  {
+    ExecScriptScopedAllowBaseSyncPrimitives allow_base_sync_primitives;
+    if (!internal::ExecProcess(cmdline, startup_dir, &output, &stderr_output,
+                               &exit_code)) {
+      *err = Err(
+          function->function(), "Could not execute python.",
+          "I was trying to execute \"" + FilePathToUTF8(python_path) + "\".");
+      return Value();
+    }
   }
   if (g_scheduler->verbose_logging()) {
     g_scheduler->Log("Pythoning", script_source.value() + " took " +
