Getting CefV8Context causes crash on OnProcessMessageReceive

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.

Getting CefV8Context causes crash on OnProcessMessageReceive

Postby chellio » Mon Jul 11, 2016 4:06 pm

In callback CefRenderProcesHandler::OnProcessMeysageReceived, when I try to get reference to V8Context associated with main frame, browser is crashing.

Stuff is simple as below:
Code: Select all
 CefRefPtr<CefV8Context> main_context = Singletons::cef_mainbrowser->GetMainFrame()->GetV8Context();


That give me following error:
Code: Select all
[0711/230139:FATAL:cef_ref_counted.h(339)] Assert failed: ptr_ != __null.

#0 0x7fbb85fb896e base::debug::StackTrace::StackTrace()
#1 0x7fbb85fccdab logging::LogMessage::~LogMessage()
#2 0x7fbb85f210ab cef_log
#3 0x000000422c84 cef::logging::LogMessage::~LogMessage()
#4 0x000000413da1 scoped_refptr<>::operator->()
#5 0x00000041278b AppHandler::OnProcessMessageReceived()
#6 0x000000436b7b (anonymous namespace)::render_process_handler_on_process_message_received()
#7 0x7fbb85e92008 CefRenderProcessHandlerCToCpp::OnProcessMessageReceived()
#8 0x7fbb85f4a560 CefBrowserImpl::OnRequest()
#9 0x7fbb85f4a318 _ZN3IPC8MessageTI19CefMsg_Request_MetaSt5tupleIJ18Cef_Request_ParamsEEvE8DispatchI14CefBrowserImplS7_vMS7_FvRKS3_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#10 0x7fbb85f4a1c9 CefBrowserImpl::OnMessageReceived()
#11 0x7fbb886a8fc3 content::RenderViewImpl::OnMessageReceived()
#12 0x7fbb86c1486f IPC::MessageRouter::RouteMessage()
#13 0x7fbb86c147e9 IPC::MessageRouter::OnMessageReceived()
#14 0x7fbb88791964 content::ChildThreadImpl::OnMessageReceived()
#15 0x7fbb86c0c9e5 IPC::ChannelProxy::Context::OnDispatchMessage()
#16 0x7fbb85fb96a6 base::debug::TaskAnnotator::RunTask()
#17 0x7fbb887e3541 scheduler::TaskQueueManager::ProcessTaskFromWorkQueue()
#18 0x7fbb887e2579 scheduler::TaskQueueManager::DoWork()
#19 0x7fbb887e4074 _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0ELm1ELm2EEEENS0_9BindStateINS0_15RunnableAdapterIMN9scheduler16TaskQueueManagerEFvNS_9TimeTicksEbEEEFvPS7_S8_bEJNS_7WeakPtrIS7_EERS8_bEEENS0_12InvokeHelperILb1EvSB_EEFvvEE3RunEPNS0_13BindStateBaseE
#20 0x7fbb85fb96a6 base::debug::TaskAnnotator::RunTask()
#21 0x7fbb85fd2405 base::MessageLoop::RunTask()
#22 0x7fbb85fd2718 base::MessageLoop::DeferOrRunPendingTask()
#23 0x7fbb85fd28db base::MessageLoop::DoWork()
#24 0x7fbb85fd3b3a base::MessagePumpDefault::Run()
#25 0x7fbb85fe7a40 base::RunLoop::Run()
#26 0x7fbb85fd1c4a base::MessageLoop::Run()
#27 0x7fbb886c7184 content::RendererMain()
#28 0x7fbb8901666a content::RunZygote()
#29 0x7fbb8901740a content::ContentMainRunnerImpl::Run()
#30 0x7fbb89016250 content::ContentMain()
#31 0x7fbb85ec6c93 CefExecuteProcess()
#32 0x7fbb85e6c1c7 cef_execute_process
#33 0x000000429f66 CefExecuteProcess()
#34 0x000000416955 main
#35 0x7fbb84b38f45 __libc_start_main
#36 0x0000004120ee <unknown>

Received signal 6
#0 0x7fbb85fb850b base::debug::(anonymous namespace)::StackDumpSignalHandler()
#1 0x7fbb84eec330 <unknown>
#2 0x7fbb84b4dc37 gsignal
#3 0x7fbb84b51028 abort
#4 0x7fbb85fb7332 base::debug::BreakDebugger()
#5 0x7fbb85fcd06a logging::LogMessage::~LogMessage()
#6 0x7fbb85f210ab cef_log
#7 0x000000422c84 cef::logging::LogMessage::~LogMessage()
#8 0x000000413da1 scoped_refptr<>::operator->()
#9 0x00000041278b AppHandler::OnProcessMessageReceived()
#10 0x000000436b7b (anonymous namespace)::render_process_handler_on_process_message_received()
#11 0x7fbb85e92008 CefRenderProcessHandlerCToCpp::OnProcessMessageReceived()
#12 0x7fbb85f4a560 CefBrowserImpl::OnRequest()
#13 0x7fbb85f4a318 _ZN3IPC8MessageTI19CefMsg_Request_MetaSt5tupleIJ18Cef_Request_ParamsEEvE8DispatchI14CefBrowserImplS7_vMS7_FvRKS3_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#14 0x7fbb85f4a1c9 CefBrowserImpl::OnMessageReceived()
#15 0x7fbb886a8fc3 content::RenderViewImpl::OnMessageReceived()
#16 0x7fbb86c1486f IPC::MessageRouter::RouteMessage()
#17 0x7fbb86c147e9 IPC::MessageRouter::OnMessageReceived()
#18 0x7fbb88791964 content::ChildThreadImpl::OnMessageReceived()
#19 0x7fbb86c0c9e5 IPC::ChannelProxy::Context::OnDispatchMessage()
#20 0x7fbb85fb96a6 base::debug::TaskAnnotator::RunTask()
#21 0x7fbb887e3541 scheduler::TaskQueueManager::ProcessTaskFromWorkQueue()
#22 0x7fbb887e2579 scheduler::TaskQueueManager::DoWork()
#23 0x7fbb887e4074 _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0ELm1ELm2EEEENS0_9BindStateINS0_15RunnableAdapterIMN9scheduler16TaskQueueManagerEFvNS_9TimeTicksEbEEEFvPS7_S8_bEJNS_7WeakPtrIS7_EERS8_bEEENS0_12InvokeHelperILb1EvSB_EEFvvEE3RunEPNS0_13BindStateBaseE
#24 0x7fbb85fb96a6 base::debug::TaskAnnotator::RunTask()
#25 0x7fbb85fd2405 base::MessageLoop::RunTask()
#26 0x7fbb85fd2718 base::MessageLoop::DeferOrRunPendingTask()
#27 0x7fbb85fd28db base::MessageLoop::DoWork()
#28 0x7fbb85fd3b3a base::MessagePumpDefault::Run()
#29 0x7fbb85fe7a40 base::RunLoop::Run()
#30 0x7fbb85fd1c4a base::MessageLoop::Run()
#31 0x7fbb886c7184 content::RendererMain()
#32 0x7fbb8901666a content::RunZygote()
#33 0x7fbb8901740a content::ContentMainRunnerImpl::Run()
#34 0x7fbb89016250 content::ContentMain()
#35 0x7fbb85ec6c93 CefExecuteProcess()
#36 0x7fbb85e6c1c7 cef_execute_process
#37 0x000000429f66 CefExecuteProcess()
#38 0x000000416955 main
#39 0x7fbb84b38f45 __libc_start_main
#40 0x0000004120ee <unknown>
  r8: ffffb2b71ce8fc18  r9: ffffb2b71ce8fc08 r10: 0000000000000008 r11: 0000000000000202
 r12: 00007ffdafde6e78 r13: 00007ffdafde6e78 r14: 00007ffdafde6c60 r15: 00007ffdafde6c50
  di: 0000000000000001  si: 0000000000000001  bp: 00007fbb856133c0  bx: 0000000000000000
  dx: 0000000000000006  ax: 0000000000000000  cx: ffffffffffffffff  sp: 00007ffdafde66b8
  ip: 00007fbb84b4dc37 efl: 0000000000000202 cgf: 0000000000000033 erf: 0000000000000000
 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]


Can you give tips for me how to solve that problem?
Last edited by chellio on Tue Jul 12, 2016 10:51 am, edited 1 time in total.
chellio
Techie
 
Posts: 27
Joined: Fri May 20, 2016 9:26 am
Location: Poland

Re: Getting CefV8Context causes crash on OnProcessMessageRec

Postby magreenblatt » Mon Jul 11, 2016 5:40 pm

CefRenderProcessHandler callbacks execute in the separate renderer process. Where are you setting cef_mainbrowser?
magreenblatt
Site Admin
 
Posts: 12409
Joined: Fri May 29, 2009 6:57 pm

Re: Getting CefV8Context causes crash on OnProcessMessageRec

Postby chellio » Tue Jul 12, 2016 10:50 am

It means I must keep references obtained from both processes?
Is there a way to get reference to CefBrowser from identifier?
chellio
Techie
 
Posts: 27
Joined: Fri May 20, 2016 9:26 am
Location: Poland

Re: Getting CefV8Context causes crash on OnProcessMessageRec

Postby magreenblatt » Tue Jul 12, 2016 10:58 am

The CefBrowser is passed to OnProcessMessageReceived.
magreenblatt
Site Admin
 
Posts: 12409
Joined: Fri May 29, 2009 6:57 pm


Return to Support Forum

Who is online

Users browsing this forum: Google [Bot] and 38 guests