Safely restarting render process in OnRenderProcessTerminate

Having problems with building or using CEF's C/C++ APIs? This forum is here to help. Please do not post bug reports or feature requests here.

Safely restarting render process in OnRenderProcessTerminate

Postby tomst » Mon Nov 10, 2014 3:20 pm

I'm using the following code to reload the browser if the render process terminates unexpectedly. However, this usually results in a crash of the main process. How can I safely restart the render process and reload the page if the render process crashes?

Code: Select all
void BrowserClient::OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser, TerminationStatus status)
{
    browser->Reload();
}


I get errors similar to the following:

Code: Select all
Crashed Thread:        0  CrBrowserMain  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BREAKPOINT (SIGTRAP)
Exception Codes:       0x0000000000000002, 0x0000000000000000

Thread 0 Crashed:: CrBrowserMain  Dispatch queue: com.apple.main-thread
0   org.chromium.ContentShell.framework   0x0000000107f80b45 cef_time_delta + 443125
1   org.chromium.ContentShell.framework   0x0000000107fa485d cef_time_delta + 589837
2   org.chromium.ContentShell.framework   0x000000010a013c68 _CTFontManagerUnregisterFontForData + 2673336
3   org.chromium.ContentShell.framework   0x000000010a013942 _CTFontManagerUnregisterFontForData + 2672530
4   org.chromium.ContentShell.framework   0x0000000109d89e8a _CTFontManagerUnregisterFontForData + 11482
5   org.chromium.ContentShell.framework   0x0000000109d88ece _CTFontManagerUnregisterFontForData + 7454
6   org.chromium.ContentShell.framework   0x000000010a342fd9 _CTFontManagerUnregisterFontForData + 6012457
7   org.chromium.ContentShell.framework   0x000000010a396c68 _CTFontManagerUnregisterFontForData + 6355640
8   org.chromium.ContentShell.framework   0x000000010a3a2c20 _CTFontManagerUnregisterFontForData + 6404720
9   org.chromium.ContentShell.framework   0x000000010a462420 _CTFontManagerUnregisterFontForData + 7189104
10  org.chromium.ContentShell.framework   0x000000010a27a6e2 _CTFontManagerUnregisterFontForData + 5190962
11  org.chromium.ContentShell.framework   0x000000010a279da2 _CTFontManagerUnregisterFontForData + 5188594
12  org.chromium.ContentShell.framework   0x000000010a26ec85 _CTFontManagerUnregisterFontForData + 5143253
13  org.chromium.ContentShell.framework   0x000000010a266333 _CTFontManagerUnregisterFontForData + 5108099
14  org.chromium.ContentShell.framework   0x000000010a26619e _CTFontManagerUnregisterFontForData + 5107694
15  org.chromium.ContentShell.framework   0x0000000107e77708 cef_binary_value_create + 2456
16  MyApp                                 0x0000000107d63c34 BrowserClient::OnRenderProcessTerminated(CefRefPtr<CefBrowser>, cef_termination_status_t) + 280


Code: Select all
[1107/151515:FATAL:default_logger_impl.cc(46)] interface_impl_internal.h(68): Check failed: !router_.
tomst
Techie
 
Posts: 43
Joined: Fri Aug 22, 2014 4:38 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby magreenblatt » Mon Nov 10, 2014 3:24 pm

What CEF version? Try using LoadURL instead.
magreenblatt
Site Admin
 
Posts: 12408
Joined: Fri May 29, 2009 6:57 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby tomst » Mon Nov 10, 2014 3:54 pm

I changed the code to:

Code: Select all
    browser->GetMainFrame()->LoadURL(browser->GetMainFrame()->GetURL());


I'm still having the same problem. Here's the detailed traceback I get in the main process after crashing the renderer process (I am testing this by executing "int *ptr = 0; *ptr = 0;" in the renderer process).

Code: Select all
#0   0x00000001002d2b45 in base::debug::BreakDebugger() at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../base/debug/debugger_posix.cc:241
#1   0x00000001002f685d in logging::LogMessage::~LogMessage() at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../base/logging.cc:644
#2   0x0000000102365c68 in mojo::internal::(anonymous namespace)::LogMessage(int, char const*) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../mojo/environment/default_logger_impl.cc:46
#3   0x0000000102365942 in mojo::internal::LogMessage::~LogMessage() at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../mojo/public/cpp/environment/lib/logging.cc:40
#4   0x00000001020dbe8a in mojo::internal::InterfaceImplState<mojo::ServiceProvider>::Bind(mojo::ScopedHandleBase<mojo::MessagePipeHandle>, bool, MojoAsyncWaiter const*) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../mojo/public/cpp/bindings/lib/interface_impl_internal.h:68
#5   0x00000001020daece in content::ServiceRegistryImpl* mojo::WeakBindToPipe<content::ServiceRegistryImpl>(content::ServiceRegistryImpl*, mojo::ScopedHandleBase<mojo::MessagePipeHandle>, MojoAsyncWaiter const*) [inlined] at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../mojo/public/cpp/bindings/interface_impl.h:87
#6   0x00000001020daeb9 in content::ServiceRegistryImpl::BindRemoteServiceProvider(mojo::ScopedHandleBase<mojo::MessagePipeHandle>) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/common/mojo/service_registry_impl.cc:31
#7   0x0000000102694fd9 in content::MojoApplicationHost::Init() at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/mojo/mojo_application_host.cc:46
#8   0x00000001026e8c68 in content::RenderProcessHostImpl::Init() at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/renderer_host/render_process_host_impl.cc:584
#9   0x00000001026f4c20 in content::RenderViewHostImpl::CreateRenderView(std::basic_string<unsigned short, base::string16_char_traits, std::allocator<unsigned short> > const&, int, int, int, bool) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/renderer_host/render_view_host_impl.cc:267
#10   0x00000001027b4420 in content::WebContentsImpl::CreateRenderViewForRenderManager(content::RenderViewHost*, int, int, bool) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/web_contents/web_contents_impl.cc:4166
#11   0x00000001025cc6e2 in content::RenderFrameHostManager::InitRenderView(content::RenderViewHostImpl*, int, int, bool) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/frame_host/render_frame_host_manager.cc:1233
#12   0x00000001025cbda2 in content::RenderFrameHostManager::Navigate(content::NavigationEntryImpl const&) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/frame_host/render_frame_host_manager.cc:226
#13   0x00000001025c0c85 in content::NavigatorImpl::NavigateToEntry(content::RenderFrameHostImpl*, content::NavigationEntryImpl const&, content::NavigationController::ReloadType) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/frame_host/navigator_impl.cc:331
#14   0x00000001025b8333 in content::NavigationControllerImpl::NavigateToPendingEntry(content::NavigationController::ReloadType) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/frame_host/navigation_controller_impl.cc:1641
#15   0x00000001025b913d in content::NavigationControllerImpl::LoadEntry(content::NavigationEntryImpl*) [inlined] at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/frame_host/navigation_controller_impl.cc:415
#16   0x00000001025b9128 in content::NavigationControllerImpl::LoadURLWithParams(content::NavigationController::LoadURLParams const&) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/frame_host/navigation_controller_impl.cc:752
#17   0x00000001025b8dbf in content::NavigationControllerImpl::LoadURL(GURL const&, content::Referrer const&, ui::PageTransition, std::string const&) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../content/browser/frame_host/navigation_controller_impl.cc:648
#18   0x00000001001f9994 in CefBrowserHostImpl::LoadURL(long long, std::string const&, content::Referrer const&, ui::PageTransition, std::string const&) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../cef/libcef/browser/browser_host_impl.cc:1525
#19   0x0000000100223072 in CefFrameHostImpl::LoadURL(CefStringBase<CefStringTraitsUTF16> const&) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../cef/libcef/browser/frame_host_impl.cc:139
#20   0x00000001001db8bc in frame_load_url(_cef_frame_t*, _cef_string_utf16_t const*) at /Users/tom/Testing/cef/compile.2171.3/chromium/src/out/Release/../../cef/libcef_dll/cpptoc/frame_cpptoc.cc:189
#21   0x00000001000487b0 in BrowserClient::OnRenderProcessTerminated(CefRefPtr<CefBrowser>, cef_termination_status_t) at /Users/tom/Vault/app/BrowserClient.cpp:377


And again, I'm seeing the error:
Code: Select all
[1110/125027:FATAL:default_logger_impl.cc(46)] interface_impl_internal.h(68): Check failed: !router_.
Last edited by tomst on Tue Nov 11, 2014 1:56 pm, edited 1 time in total.
tomst
Techie
 
Posts: 43
Joined: Fri Aug 22, 2014 4:38 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby tomst » Mon Nov 10, 2014 3:55 pm

This is in the 2171 branch by the way (Chromium 39.0.2171.36)
tomst
Techie
 
Posts: 43
Joined: Fri Aug 22, 2014 4:38 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby magreenblatt » Mon Nov 10, 2014 4:50 pm

Can you add a bug? Thanks.
magreenblatt
Site Admin
 
Posts: 12408
Joined: Fri May 29, 2009 6:57 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby tomst » Tue Nov 11, 2014 1:55 pm

tomst
Techie
 
Posts: 43
Joined: Fri Aug 22, 2014 4:38 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby me12 » Tue Dec 09, 2014 3:52 am

I am currently experiencing the same issue. :(

Did you find a workaround yet? (Since the bug hasn't been fixed yet.)
me12
Techie
 
Posts: 31
Joined: Thu Jul 10, 2014 12:46 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby tomst » Tue Jan 13, 2015 2:37 am

No workaround yet, but if you find a workaround or bugfix please keep me posted.
tomst
Techie
 
Posts: 43
Joined: Fri Aug 22, 2014 4:38 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby magreenblatt » Tue Jan 13, 2015 1:07 pm

This is now fixed. See the above issue link.
magreenblatt
Site Admin
 
Posts: 12408
Joined: Fri May 29, 2009 6:57 pm

Re: Safely restarting render process in OnRenderProcessTermi

Postby ray007 » Wed Aug 26, 2015 10:40 am

Apparently the fix doesn't cover the offscreen renderer, which is used by the CefSharp Wpf control.
I was told to report this here, see https://github.com/cefsharp/CefSharp/is ... -134924154
ray007
Techie
 
Posts: 10
Joined: Wed Aug 26, 2015 10:37 am

Next

Return to Support Forum

Who is online

Users browsing this forum: No registered users and 54 guests