Fix grpc_init by removing exec_ctx usage before init

pull/13058/head
Yash Tibrewal 7 years ago
parent 45b7ad5cf5
commit 3285f4c732
  1. 6
      include/grpc/support/tls_gcc.h
  2. 7
      src/core/lib/iomgr/iomgr.cc
  3. 1
      src/core/lib/surface/init.cc

@ -40,12 +40,12 @@ struct gpr_gcc_thread_local {
/** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class.
* GPR_TLS_CLASS_DEF needs to be called to define this member. */
#define GPR_TLS_CLASS_DECL(name) \
static bool name##_inited; \
#define GPR_TLS_CLASS_DECL(name) \
static bool name##_inited; \
static __thread struct gpr_gcc_thread_local name
#define GPR_TLS_CLASS_DEF(name) \
bool name##_inited = false; \
bool name##_inited = false; \
__thread struct gpr_gcc_thread_local name = {0, &(name##_inited)}
#define gpr_tls_init(tls) \

@ -50,8 +50,11 @@ void grpc_iomgr_init() {
gpr_mu_init(&g_mu);
gpr_cv_init(&g_rcv);
grpc_core::ExecCtx::GlobalInit();
grpc_executor_init();
grpc_timer_list_init();
{
grpc_core::ExecCtx _local_exec_ctx;
grpc_executor_init();
grpc_timer_list_init();
}
g_root_object.next = g_root_object.prev = &g_root_object;
g_root_object.name = (char*)"root";
grpc_network_status_init();

@ -116,7 +116,6 @@ void grpc_init(void) {
int i;
gpr_once_init(&g_basic_init, do_basic_init);
grpc_core::ExecCtx _local_exec_ctx;
gpr_mu_lock(&g_init_mu);
if (++g_initializations == 1) {
gpr_time_init();

Loading…
Cancel
Save