Hi
I have switched from a working Windowed implementation to a Windowless (OSR) implementation by simple implementation of the CefRenderHandler methods as per the documentation. All working fine for valid URLs.
The problem I have now is that as I was calling browser->GetHost()->CloseBrowser() in after my implementation of CefLoadHandler::OnLoadError() but it seems the renderer is still active and causes an access violation at the DCHECK below. This seems to only occur when the URL is unreachable and it crashes the entire browser process and any other URL requests it may have been processing - we're stress testing. If I don't close the browser - all is fine.
Hoping this is something straightforward that an experienced eye can spot.
Thanks in advance.
- Code: Select all
void NavigatorImpl::RecordNavigationMetrics(
const LoadCommittedDetails& details,
const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
SiteInstance* site_instance) {
DCHECK(site_instance->HasProcess());
Stack trace:
- Code: Select all
> libcef.dll!content::NavigatorImpl::RecordNavigationMetrics(const content::LoadCommittedDetails & details, const FrameHostMsg_DidCommitProvisionalLoad_Params & params, content::SiteInstance * site_instance) Line 1194 C++
libcef.dll!content::NavigatorImpl::DidNavigate(content::RenderFrameHostImpl * render_frame_host, const FrameHostMsg_DidCommitProvisionalLoad_Params & params, std::unique_ptr<content::NavigationHandleImpl,std::default_delete<content::NavigationHandleImpl> > navigation_handle) Line 716 C++
libcef.dll!content::RenderFrameHostImpl::OnDidCommitProvisionalLoad(const IPC::Message & msg) Line 1306 C++
libcef.dll!content::RenderFrameHostImpl::OnMessageReceived(const IPC::Message & msg) Line 689 C++
libcef.dll!content::RenderProcessHostImpl::OnMessageReceived(const IPC::Message & msg) Line 2100 C++
libcef.dll!IPC::ChannelProxy::Context::OnDispatchMessage(const IPC::Message & message) Line 330 C++
libcef.dll!base::internal::RunMixin<base::Callback<void __cdecl(void),0,0> >::Run() Line 68 C++
libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, base::PendingTask * pending_task) Line 61 C++
libcef.dll!base::MessageLoop::RunTask(base::PendingTask * pending_task) Line 421 C++
libcef.dll!base::MessageLoop::DoWork() Line 524 C++
libcef.dll!base::MessagePumpForUI::DoRunLoop() Line 174 C++
libcef.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 58 C++
libcef.dll!base::RunLoop::Run() Line 38 C++
libcef.dll!CefBrowserMessageLoop::RunMessageLoop() Line 128 C++