From 86febe4121cbc00e5fc6a3ec32971d3dbce5f496 Mon Sep 17 00:00:00 2001
From: Esun Kim <veblush@google.com>
Date: Mon, 13 May 2019 10:56:58 -0700
Subject: [PATCH] Made Fork.support_enabled_ atomic

---
 src/core/lib/gprpp/fork.cc | 2 +-
 src/core/lib/gprpp/fork.h  | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/core/lib/gprpp/fork.cc b/src/core/lib/gprpp/fork.cc
index cacf5e82e5a..37552692373 100644
--- a/src/core/lib/gprpp/fork.cc
+++ b/src/core/lib/gprpp/fork.cc
@@ -243,7 +243,7 @@ void Fork::AwaitThreads() {
 
 internal::ExecCtxState* Fork::exec_ctx_state_ = nullptr;
 internal::ThreadState* Fork::thread_state_ = nullptr;
-bool Fork::support_enabled_ = false;
+std::atomic<bool> Fork::support_enabled_;
 bool Fork::override_enabled_ = false;
 Fork::child_postfork_func Fork::reset_child_polling_engine_ = nullptr;
 }  // namespace grpc_core
diff --git a/src/core/lib/gprpp/fork.h b/src/core/lib/gprpp/fork.h
index 5a7404f0d91..73f2fa56aa7 100644
--- a/src/core/lib/gprpp/fork.h
+++ b/src/core/lib/gprpp/fork.h
@@ -19,6 +19,10 @@
 #ifndef GRPC_CORE_LIB_GPRPP_FORK_H
 #define GRPC_CORE_LIB_GPRPP_FORK_H
 
+#include <grpc/support/port_platform.h>
+
+#include <atomic>
+
 /*
  * NOTE: FORKING IS NOT GENERALLY SUPPORTED, THIS IS ONLY INTENDED TO WORK
  *       AROUND VERY SPECIFIC USE CASES.
@@ -78,7 +82,7 @@ class Fork {
  private:
   static internal::ExecCtxState* exec_ctx_state_;
   static internal::ThreadState* thread_state_;
-  static bool support_enabled_;
+  static std::atomic<bool> support_enabled_;
   static bool override_enabled_;
   static child_postfork_func reset_child_polling_engine_;
 };