From ccb06ce3cb70cdd37fafbf78b12a14b624183ac4 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Fri, 26 Jul 2019 09:47:11 -0400 Subject: [PATCH] Fix crash on DevTools remote debugging of WebWorkers (fixes issue #2605) --- libcef/renderer/content_renderer_client.cc | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/libcef/renderer/content_renderer_client.cc b/libcef/renderer/content_renderer_client.cc index aab114339..4d0dc4cb3 100644 --- a/libcef/renderer/content_renderer_client.cc +++ b/libcef/renderer/content_renderer_client.cc @@ -648,12 +648,28 @@ void CefContentRendererClient::RunScriptsAtDocumentIdle( } void CefContentRendererClient::DevToolsAgentAttached() { - CEF_REQUIRE_RT(); + // WebWorkers may be creating agents on a different thread. + if (!render_task_runner_->BelongsToCurrentThread()) { + render_task_runner_->PostTask( + FROM_HERE, + base::BindOnce(&CefContentRendererClient::DevToolsAgentAttached, + base::Unretained(this))); + return; + } + ++devtools_agent_count_; } void CefContentRendererClient::DevToolsAgentDetached() { - CEF_REQUIRE_RT(); + // WebWorkers may be creating agents on a different thread. + if (!render_task_runner_->BelongsToCurrentThread()) { + render_task_runner_->PostTask( + FROM_HERE, + base::BindOnce(&CefContentRendererClient::DevToolsAgentDetached, + base::Unretained(this))); + return; + } + --devtools_agent_count_; if (devtools_agent_count_ == 0 && uncaught_exception_stack_size_ > 0) { // When the last DevToolsAgent is detached the stack size is set to 0.