From 4ac93a538ac79975345bd8d89dd8233be3846fb0 Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Thu, 9 May 2019 08:46:10 -0700 Subject: [PATCH] Fix a multithreaded bug in llvm LazyInitJIT (#3158) --- src/codegen/llvm/llvm_module.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/codegen/llvm/llvm_module.cc b/src/codegen/llvm/llvm_module.cc index 10b891ca2bda..2b3f316eaba5 100644 --- a/src/codegen/llvm/llvm_module.cc +++ b/src/codegen/llvm/llvm_module.cc @@ -6,9 +6,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -226,8 +226,10 @@ class LLVMModuleNode final : public runtime::ModuleNode { private: void LazyInitJIT() { - CHECK(ee_ == nullptr); std::lock_guard lock(mutex_); + if (ee_) { + return; + } llvm::EngineBuilder builder(std::move(module_)); std::string triple, mcpu, mattr; llvm::TargetOptions opt;