fix(core): fix mutex crash

(cherry picked from commit 62fc9cfa191e8bb254bbaa147ca8b5996bab57e3)
(cherry picked from commit a2f42660be)
This commit is contained in:
pollyzhang
2022-05-17 11:47:12 +08:00
committed by churchill-zhang
parent 76c4540358
commit 4c2a8cd52e
3 changed files with 13 additions and 6 deletions
+2 -1
View File
@@ -55,6 +55,7 @@ class Engine {
void TerminateRunner();
inline std::shared_ptr<JavaScriptTaskRunner> GetJSRunner() {
std::lock_guard<std::mutex> lock(js_runner_mutex_);
return js_runner_;
}
inline std::shared_ptr<WorkerTaskRunner> GetWorkerTaskRunner() {
@@ -73,6 +74,6 @@ class Engine {
std::shared_ptr<VM> vm_;
std::unique_ptr<RegisterMap> map_;
std::mutex cnt_mutex_;
std::mutex runner_mutex_;
std::mutex js_runner_mutex_;
uint32_t scope_cnt_;
};
+7 -4
View File
@@ -44,11 +44,14 @@ Engine::~Engine() {
void Engine::TerminateRunner() {
TDF_BASE_DLOG(INFO) << "~TerminateRunner";
std::lock_guard<std::mutex> lock(runner_mutex_);
if (js_runner_) {
js_runner_->Terminate();
js_runner_ = nullptr;
{
std::lock_guard<std::mutex> lock(js_runner_mutex_);
if (js_runner_) {
js_runner_->Terminate();
js_runner_ = nullptr;
}
}
if (worker_task_runner_) {
worker_task_runner_->Terminate();
worker_task_runner_ = nullptr;
@@ -194,7 +194,10 @@ void ContextifyModule::LoadUntrustedContent(const CallbackInfo& info) {
RemoveCBFunc(uri);
}
};
scope->GetTaskRunner()->PostTask(js_task);
auto runner = scope->GetTaskRunner();
if (runner) {
runner->PostTask(js_task);
}
};
if (loader) {
loader->RequestUntrustedContent(uri, cb);