reload cause render process crash

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.

reload cause render process crash

Postby softarts » Tue Aug 23, 2016 1:51 am

scenario:
1.open a page contain JS
2.click a button on page->call JS function->trigger a function in browser process(via CefMessageRouterBrowserSide handler)
3.reload the page in mainthread(browser process):
CefRefPtr<CefBrowser> browser = GetBrowser(); // via handler.
if (browser.get())
browser->Reload();
4.click the button on page again, but crash, the function is not triggered.

the backtrace:

2:029:x86> kp
ChildEBP RetAddr
002aa200 102a8f95 libcef!base::debug::BreakDebugger(void)+0x16 [e:\win-2623\download\chromium\src\base\debug\debugger_win.cc @ 21]
002aa794 1299cee8 libcef!logging::LogMessage::~LogMessage(void)+0x2d5 [e:\win-2623\download\chromium\src\base\logging.cc @ 740]
002aa9d0 1296d648 libcef!CefV8ContextImpl::IsSame(class CefRefPtr<CefV8Context> that = class CefRefPtr<CefV8Context>)+0x222 [e:\win-2623\download\chromium\src\cef\libcef\renderer\v8_impl.cc @ 958]
002aab68 0125df22 libcef!`anonymous namespace'::v8context_is_same(struct _cef_v8context_t * self = 0x099f6b90, struct _cef_v8context_t * that = 0x0990ad00)+0x1b2 [e:\win-2623\download\chromium\src\cef\libcef_dll\cpptoc\v8context_cpptoc.cc @ 174]
002aac50 012370d6 qtclient!CefV8ContextCToCpp::IsSame(class CefRefPtr<CefV8Context> that = class CefRefPtr<CefV8Context>)+0x122 [e:\work\cef\cef_binary_3.2623.1401.gb90a3be_windows32\libcef_dll\ctocpp\v8context_ctocpp.cc @ 168]
002aad64 01236e7b qtclient!`anonymous namespace'::CefMessageRouterRendererSideImpl::GetIDForContext(class CefRefPtr<CefV8Context> context = class CefRefPtr<CefV8Context>, bool remove = false)+0x136 [e:\work\cef\cef_binary_3.2623.1401.gb90a3be_windows32\libcef_dll\wrapper\cef_message_router.cc @ 1093]
002aaf1c 01235825 qtclient!`anonymous namespace'::CefMessageRouterRendererSideImpl::CreateIDForContext(class CefRefPtr<CefV8Context> context = class CefRefPtr<CefV8Context>)+0xcb [e:\work\cef\cef_binary_3.2623.1401.gb90a3be_windows32\libcef_dll\wrapper\cef_message_router.cc @ 1079]
002aaf34 012352b2 qtclient!`anonymous namespace'::CefMessageRouterRendererSideImpl::V8HandlerImpl::GetIDForContext(class CefRefPtr<CefV8Context> context = class CefRefPtr<CefV8Context>)+0x45 [e:\work\cef\cef_binary_3.2623.1401.gb90a3be_windows32\libcef_dll\wrapper\cef_message_router.cc @ 716]
002ab250 0126ed5f qtclient!`anonymous namespace'::CefMessageRouterRendererSideImpl::V8HandlerImpl::Execute(class CefStringBase<CefStringTraitsUTF16> * name = 0x002ab280, class CefRefPtr<CefV8Value> object = class CefRefPtr<CefV8Value>, class std::vector<CefRefPtr<CefV8Value>,std::allocator<CefRefPtr<CefV8Value> > > * arguments = 0x002ab708, class CefRefPtr<CefV8Value> * retval = 0x002ab6ec, class CefStringBase<CefStringTraitsUTF16> * exception = 0x002ab6d4)+0x712 [e:\work\cef\cef_binary_3.2623.1401.gb90a3be_windows32\libcef_dll\wrapper\cef_message_router.cc @ 680]
002ab720 1296f75a qtclient!`anonymous namespace'::v8handler_execute(struct _cef_v8handler_t * self = 0x004a1800, struct _cef_string_utf16_t * name = 0x05ba6348, struct _cef_v8value_t * object = 0x0990b190, unsigned int argumentsCount = 1, struct _cef_v8value_t ** arguments = 0x0990cd30, struct _cef_v8value_t ** retval = 0x002ab9b8, struct _cef_string_utf16_t * exception = 0x05bb5098)+0x41f [e:\work\cef\cef_binary_3.2623.1401.gb90a3be_windows32\libcef_dll\cpptoc\v8handler_cpptoc.cc @ 73]
002ab9d4 129954e2 libcef!CefV8HandlerCToCpp::Execute(class CefStringBase<CefStringTraitsUTF16> * name = 0x002aba7c, class CefRefPtr<CefV8Value> object = class CefRefPtr<CefV8Value>, class std::vector<CefRefPtr<CefV8Value>,std::allocator<CefRefPtr<CefV8Value> > > * arguments = 0x002aba94, class CefRefPtr<CefV8Value> * retval = 0x002aba64, class CefStringBase<CefStringTraitsUTF16> * exception = 0x002aba50)+0x37a [e:\win-2623\download\chromium\src\cef\libcef_dll\ctocpp\v8handler_ctocpp.cc @ 62]
002ababc 10a011a9 libcef!`anonymous namespace'::FunctionCallbackImpl(class v8::FunctionCallbackInfo<v8::Value> * info = 0x002abae8)+0x1bf [e:\win-2623\download\chromium\src\cef\libcef\renderer\v8_impl.cc @ 497]
002abaf8 1230deb5 libcef!v8::internal::FunctionCallbackArguments::Call(<function> * f = 0x12995323)+0x59 [e:\win-2623\download\chromium\src\v8\src\arguments.cc @ 34]
002abb88 12307527 libcef!v8::internal::`anonymous namespace'::HandleApiCallHelper<0>(class v8::internal::Isolate * isolate = 0x002aa254, class v8::internal::`anonymous-namespace'::BuiltinArguments<1> args = class v8::internal::`anonymous-namespace'::BuiltinArguments<1>)+0x2e5 [e:\win-2623\download\chromium\src\v8\src\builtins.cc @ 3471]
002abba8 123074e8 libcef!v8::internal::Builtin_Impl_HandleApiCall(class v8::internal::`anonymous-namespace'::BuiltinArguments<1> args = class v8::internal::`anonymous-namespace'::BuiltinArguments<1>, class v8::internal::Isolate * isolate = 0x00000001)+0x37 [e:\win-2623\download\chromium\src\v8\src\builtins.cc @ 3494]
002abc64 1217a343 libcef!v8::internal::Builtin_HandleApiCall(int args_length = 0n3, class v8::internal::Object ** args_object = 0x002abbf0, class v8::internal::Isolate * isolate = 0x006920e8)+0x28 [e:\win-2623\download\chromium\src\v8\src\builtins.cc @ 3490]
002abcc8 1217a65c libcef!v8::internal::`anonymous namespace'::Invoke(class v8::internal::Isolate * isolate = 0x002aa254, bool is_construct = false, class v8::internal::Handle<v8::internal::Object> target = class v8::internal::Handle<v8::internal::Object>, class v8::internal::Handle<v8::internal::Object> receiver = class v8::internal::Handle<v8::internal::Object>, int argc = 0n1, class v8::internal::Handle<v8::internal::Object> * args = 0x002abe9c, class v8::internal::Handle<v8::internal::Object> new_target = class v8::internal::Handle<v8::internal::Object>)+0x113 [e:\win-2623\download\chromium\src\v8\src\execution.cc @ 98]
002abd10 1093d10a libcef!v8::internal::Execution::Call(class v8::internal::Isolate * isolate = 0x002aa254, class v8::internal::Handle<v8::internal::Object> callable = class v8::internal::Handle<v8::internal::Object>, class v8::internal::Handle<v8::internal::Object> receiver = class v8::internal::Handle<v8::internal::Object>, int argc = 0n1, class v8::internal::Handle<v8::internal::Object> * argv = 0x002abe9c)+0x22c [e:\win-2623\download\chromium\src\v8\src\execution.cc @ 164]
002abd60 119a295c libcef!v8::Function::Call(class v8::Local<v8::Context> context = class v8::Local<v8::Context>, class v8::Local<v8::Value> recv = class v8::Local<v8::Value>, int argc = 0n1, class v8::Local<v8::Value> * argv = 0x002abe9c)+0x12a [e:\win-2623\download\chromium\src\v8\src\api.cc @ 4388]
002abde4 116a3e3c libcef!blink::V8ScriptRunner::callFunction(class v8::Local<v8::Function> function = class v8::Local<v8::Function>, class blink::ExecutionContext * context = 0x0740498c, class v8::Local<v8::Value> receiver = class v8::Local<v8::Value>, int argc = 0n1, class v8::Local<v8::Value> * args = 0x002abe9c, class v8::Isolate * isolate = 0x006920e8)+0x1dc [e:\win-2623\download\chromium\src\third_party\webkit\source\bindings\core\v8\v8scriptrunner.cpp @ 441]
002abe14 116a3db3 libcef!blink::ScriptController::callFunction(class blink::ExecutionContext * context = 0x0740498c, class v8::Local<v8::Function> function = class v8::Local<v8::Function>, class v8::Local<v8::Value> receiver = class v8::Local<v8::Value>, int argc = 0n1, class v8::Local<v8::Value> * info = 0x002abe9c, class v8::Isolate * isolate = 0x006920e8)+0x3c [e:\win-2623\download\chromium\src\third_party\webkit\source\bindings\core\v8\scriptcontroller.cpp @ 158]
002abe50 11a1e0f1 libcef!blink::ScriptController::callFunction(class v8::Local<v8::Function> function = class v8::Local<v8::Function>, class v8::Local<v8::Value> receiver = class v8::Local<v8::Value>, int argc = 0n1, class v8::Local<v8::Value> * info = 0x002abe9c)+0x83 [e:\win-2623\download\chromium\src\third_party\webkit\source\bindings\core\v8\scriptcontroller.cpp @ 153]
002abed0 119ee1a1 libcef!blink::V8LazyEventListener::callListenerFunction(class blink::ScriptState * scriptState = 0x41305c40, class v8::Local<v8::Value> jsEvent = class v8::Local<v8::Value>, class blink::Event * event = 0x412fc550)+0x1c1 [e:\win-2623\download\chromium\src\third_party\webkit\source\bindings\core\v8\v8lazyeventlistener.cpp @ 100]
002abf88 119edf3a libcef!blink::V8AbstractEventListener::invokeEventHandler(class blink::ScriptState * scriptState = 0x41305c40, class blink::Event * event = 0x412fc550, class v8::Local<v8::Value> jsEvent = class v8::Local<v8::Value>)+0x131 [e:\win-2623\download\chromium\src\third_party\webkit\source\bindings\core\v8\v8abstracteventlistener.cpp @ 138]
002abfe0 119ede16 libcef!blink::V8AbstractEventListener::handleEvent(class blink::ScriptState * scriptState = 0x41305c40, class blink::Event * event = 0x412fc550)+0xba [e:\win-2623\download\chromium\src\third_party\webkit\source\bindings\core\v8\v8abstracteventlistener.cpp @ 100]
002ac020 10b15d5d libcef!blink::V8AbstractEventListener::handleEvent(class blink::ExecutionContext * executionContext = 0x0740498c, class blink::Event * event = 0x412fc550)+0xf6 [e:\win-2623\download\chromium\src\third_party\webkit\source\bindings\core\v8\v8abstracteventlistener.cpp @ 84]
002ac0d4 10b157ac libcef!blink::EventTarget::fireEventListeners(class blink::Event * event = 0x412fc550, class blink::EventTargetData * d = 0x4123aee0, class WTF::Vector<blink::RegisteredEventListener,1,WTF::PartitionAllocator> * entry = 0x41225b68)+0x48d [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\eventtarget.cpp @ 440]
002ac120 10a67d0e libcef!blink::EventTarget::fireEventListeners(class blink::Event * event = 0x412fc550)+0x11c [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\eventtarget.cpp @ 364]
002ac134 10c41765 libcef!blink::Node::handleLocalEvents(class blink::Event * event = 0x412fc550)+0x5e [e:\win-2623\download\chromium\src\third_party\webkit\source\core\dom\node.cpp @ 2009]
002ac154 10bf4ca9 libcef!blink::NodeEventContext::handleLocalEvents(class blink::Event * event = 0x412fc550)+0x115 [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\nodeeventcontext.cpp @ 66]
002ac168 10bf4881 libcef!blink::EventDispatcher::dispatchEventAtTarget(void)+0x59 [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\eventdispatcher.cpp @ 171]
002ac1f0 10bf1425 libcef!blink::EventDispatcher::dispatch(void)+0x281 [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\eventdispatcher.cpp @ 125]
002ac244 10bf401f libcef!blink::MouseEventDispatchMediator::dispatchEvent(class blink::EventDispatcher * dispatcher = 0x002ac268)+0x115 [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\mouseevent.cpp @ 289]
002ac2a4 10a67de7 libcef!blink::EventDispatcher::dispatchEvent(class blink::Node * node = 0x07460a04, class WTF::PassRefPtr<blink::EventDispatchMediator> mediator = class WTF::PassRefPtr<blink::EventDispatchMediator>)+0x10f [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\eventdispatcher.cpp @ 49]
002ac2c8 10b15318 libcef!blink::Node::dispatchEventInternal(class WTF::PassRefPtr<blink::Event> event = class WTF::PassRefPtr<blink::Event>)+0x47 [e:\win-2623\download\chromium\src\third_party\webkit\source\core\dom\node.cpp @ 2019]
002ac2e0 10a680ee libcef!blink::EventTarget::dispatchEvent(class WTF::PassRefPtr<blink::Event> event = class WTF::PassRefPtr<blink::Event>)+0x48 [e:\win-2623\download\chromium\src\third_party\webkit\source\core\events\eventtarget.cpp @ 273]
002ac310 10af662d libcef!blink::Node::dispatchMouseEvent(class blink::PlatformMouseEvent * nativeEvent = 0x002ac4c0, class WTF::AtomicString * eventType = 0x31012af0, int detail = 0n1, class blink::Node * relatedTarget = 0x00000000)+0x8e [e:\win-2623\download\chromium\src\third_party\webkit\source\core\dom\node.cpp @ 2048]
002ac4b0 1391d2bf libcef!blink::EventHandler::handleMouseReleaseEvent(class blink::PlatformMouseEvent * mouseEvent = 0x002ac4c0)+0x64d [e:\win-2623\download\chromium\src\third_party\webkit\source\core\input\eventhandler.cpp @ 1385]
002ac514 138d0c99 libcef!blink::PageWidgetEventHandler::handleMouseUp(class blink::LocalFrame * mainFrame = 0x412cc010, class blink::WebMouseEvent * event = 0x099c9568)+0x3d [e:\win-2623\download\chromium\src\third_party\webkit\source\web\pagewidgetdelegate.cpp @ 206]
002ac528 1391d0a7 libcef!blink::WebViewImpl::handleMouseUp(class blink::LocalFrame * mainFrame = 0x412cc010, class blink::WebMouseEvent * event = 0x099c9568)+0x1c [e:\win-2623\download\chromium\src\third_party\webkit\source\web\webviewimpl.cpp @ 691]
002ac540 138cfef9 libcef!blink::PageWidgetDelegate::handleInputEvent(class blink::PageWidgetEventHandler * handler = 0x41280018, class blink::WebInputEvent * event = 0x099c9568, class blink::LocalFrame * root = 0x412cc010)+0x183 [e:\win-2623\download\chromium\src\third_party\webkit\source\web\pagewidgetdelegate.cpp @ 138]
002ac798 1440a8ce libcef!blink::WebViewImpl::handleInputEvent(class blink::WebInputEvent * inputEvent = 0x099c9568)+0x79c [e:\win-2623\download\chromium\src\third_party\webkit\source\web\webviewimpl.cpp @ 2240]
002accfc 142471a0 libcef!content::RenderWidgetInputHandler::HandleInputEvent(class blink::WebInputEvent * input_event = 0x099c9568, class ui::LatencyInfo * latency_info = 0x002acd88)+0x571 [e:\win-2623\download\chromium\src\content\renderer\input\render_widget_input_handler.cc @ 308]
002acd10 1423b4d0 libcef!content::RenderWidget::OnHandleInputEvent(class blink::WebInputEvent * input_event = 0x099c9568, class ui::LatencyInfo * latency_info = 0x002acd88)+0x31 [e:\win-2623\download\chromium\src\content\renderer\render_widget.cc @ 1080]
002acd28 1423aff2 libcef!base::DispatchToMethodImpl<content::RenderWidget,void (class content::RenderWidget * obj = 0x05b26320, <function> * method = 0x1424716f, struct base::Tuple<blink::WebInputEvent const *,ui::LatencyInfo> * arg = 0x002acd80, struct base::IndexSequence<0,1> __formal = struct base::IndexSequence<0,1>)+0x5f [e:\win-2623\download\chromium\src\base\tuple.h @ 252]
002acd54 1423a9e3 libcef!base::DispatchToMethod<content::RenderWidget,void (class content::RenderWidget * obj = 0x05b26320, <function> * method = 0x1424716f, struct base::Tuple<blink::WebInputEvent const *,ui::LatencyInfo> * arg = 0x002acd80)+0x2b [e:\win-2623\download\chromium\src\base\tuple.h @ 259]
002acf88 1424773f libcef!InputMsg_HandleInputEvent::Dispatch<content::RenderWidget,content::RenderWidget,void,void (class IPC::Message * msg = 0x099c6330, class content::RenderWidget * obj = 0x05b26320, class content::RenderWidget * sender = 0x05b26320, void * parameter = 0x00000000, <function> * func = 0x1424716f)+0x76 [e:\win-2623\download\chromium\src\content\common\input_messages.h @ 119]
002ad55c 142023f9 libcef!content::RenderWidget::OnMessageReceived(class IPC::Message * message = 0x099c6330)+0x228 [e:\win-2623\download\chromium\src\content\renderer\render_widget.cc @ 690]
002ae2b0 17a28b88 libcef!content::RenderViewImpl::OnMessageReceived(class IPC::Message * message = 0x099c6330)+0x1f23 [e:\win-2623\download\chromium\src\content\renderer\render_view_impl.cc @ 1408]
002ae2c8 147006a6 libcef!content::MessageRouter::RouteMessage(class IPC::Message * msg = 0x099c6330)+0x47 [e:\win-2623\download\chromium\src\content\common\message_router.cc @ 54]
002ae2dc 17a28afd libcef!content::ChildThreadImpl::ChildThreadMessageRouter::RouteMessage(class IPC::Message * msg = 0x099c6330)+0x21 [e:\win-2623\download\chromium\src\content\child\child_thread_impl.cc @ 315]
002ae2f0 147000c2 libcef!content::MessageRouter::OnMessageReceived(class IPC::Message * msg = 0x099c6330)+0x47 [e:\win-2623\download\chromium\src\content\common\message_router.cc @ 46]
002ae544 142f06e6 libcef!content::ChildThreadImpl::OnMessageReceived(class IPC::Message * msg = 0x099c6330)+0x621 [e:\win-2623\download\chromium\src\content\child\child_thread_impl.cc @ 637]
002ae558 142ed83e libcef!base::internal::RunnableAdapter<bool (class content::ChildThreadImpl * object = 0x006283b8, class IPC::Message * <args_0> = 0x099c6330)+0x3c [e:\win-2623\download\chromium\src\base\bind_internal.h @ 178]
002ae570 142f02af libcef!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<bool (class base::internal::RunnableAdapter<bool (__thiscall content::ChildThreadImpl::*)(IPC::Message const &)> runnable = class base::internal::RunnableAdapter<bool (__thiscall content::ChildThreadImpl::*)(IPC::Message const &)>, class content::RenderThreadImpl * <args_0> = 0x006283b0, class IPC::Message * <args_1> = 0x099c6330)+0x4c [e:\win-2623\download\chromium\src\base\bind_internal.h @ 298]
002ae59c 142eff2c libcef!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<bool (class base::internal::BindStateBase * base = 0x006c03e0, class IPC::Message * <unbound_args_0> = 0x099c6330)+0x47 [e:\win-2623\download\chromium\src\base\bind_internal.h @ 350]
002ae5b8 142ea2c5 libcef!base::Callback<void __cdecl(class IPC::Message * <args_0> = 0x099c6330)+0x38 [e:\win-2623\download\chromium\src\base\callback.h @ 394]
002ae5c8 142f0692 libcef!base::CancelableCallback<void __cdecl(class IPC::Message * <args_0> = 0x099c6330)+0x1c [e:\win-2623\download\chromium\src\base\cancelable_callback.h @ 107]
002ae5dc 142ed67f libcef!base::internal::RunnableAdapter<void (class base::CancelableCallback<void __cdecl(IPC::Message const &)> * object = 0x006285d0, class IPC::Message * <args_0> = 0x099c6330)+0x23 [e:\win-2623\download\chromium\src\base\bind_internal.h @ 198]
002ae5ec 142f0257 libcef!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (class base::internal::RunnableAdapter<void (__thiscall base::CancelableCallback<void __cdecl(IPC::Message const &)>::*)(IPC::Message const &)const > runnable = class base::internal::RunnableAdapter<void (__thiscall base::CancelableCallback<void __cdecl(IPC::Message const &)>::*)(IPC::Message const &)const >, class base::WeakPtr<base::CancelableCallback<void __cdecl(IPC::Message const &)> > * weak_ptr = 0x006c0500, class IPC::Message * <args_0> = 0x099c6330)+0x2c [e:\win-2623\download\chromium\src\base\bind_internal.h @ 308]
002ae604 142eff2c libcef!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (class base::internal::BindStateBase * base = 0x006c04f0, class IPC::Message * <unbound_args_0> = 0x099c6330)+0x3b [e:\win-2623\download\chromium\src\base\bind_internal.h @ 350]
002ae620 144d9ffd libcef!base::Callback<void __cdecl(class IPC::Message * <args_0> = 0x099c6330)+0x38 [e:\win-2623\download\chromium\src\base\callback.h @ 394]
002ae62c 144da508 libcef!base::internal::InvokeHelper<0,void,base::Callback<void __cdecl(class base::Callback<void __cdecl(IPC::Message const &)> runnable = class base::Callback<void __cdecl(IPC::Message const &)>, class IPC::Message * <args_0> = 0x099c6330)+0x15 [e:\win-2623\download\chromium\src\base\bind_internal.h @ 298]
002ae648 10302f9f libcef!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::Callback<void __cdecl(class base::internal::BindStateBase * base = 0x099c6318)+0x43 [e:\win-2623\download\chromium\src\base\bind_internal.h @ 350]
002ae660 1041644b libcef!base::Callback<void __cdecl(void)+0x2f [e:\win-2623\download\chromium\src\base\callback.h @ 394]
002ae714 148ec207 libcef!base::debug::TaskAnnotator::RunTask(char * queue_function = 0x1c60e850 "TaskQueueManager::PostTask", struct base::PendingTask * pending_task = 0x002ae8b4)+0x17b [e:\win-2623\download\chromium\src\base\debug\task_annotator.cc @ 53]
002ae90c 148eb0de libcef!scheduler::TaskQueueManager::ProcessTaskFromWorkQueue(class scheduler::internal::WorkQueue * work_queue = 0x00625890, class scheduler::internal::TaskQueueImpl::Task * out_previous_task = 0x002aea28)+0x3db [e:\win-2623\download\chromium\src\components\scheduler\base\task_queue_manager.cc @ 268]
002aeaac 148ec6f1 libcef!scheduler::TaskQueueManager::DoWork(class base::TimeTicks run_time = class base::TimeTicks, bool from_main_thread = false)+0x26a [e:\win-2623\download\chromium\src\components\scheduler\base\task_queue_manager.cc @ 180]
002aeac8 148eb4da libcef!base::internal::RunnableAdapter<void (class scheduler::TaskQueueManager * object = 0x006234d8, class base::TimeTicks * <args_0> = 0x00624118, bool * <args_1> = 0x00624120)+0x36 [e:\win-2623\download\chromium\src\base\bind_internal.h @ 178]
002aeadc 148ec6aa libcef!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (class base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(base::TimeTicks,bool)> runnable = class base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(base::TimeTicks,bool)>, class base::WeakPtr<scheduler::TaskQueueManager> * weak_ptr = 0x00624110, class base::TimeTicks * <args_0> = 0x00624118, bool * <args_1> = 0x00624120)+0x36 [e:\win-2623\download\chromium\src\base\bind_internal.h @ 308]
002aeb00 10302f9f libcef!base::internal::Invoker<base::IndexSequence<0,1,2>,base::internal::BindState<base::internal::RunnableAdapter<void (class base::internal::BindStateBase * base = 0x00624100)+0x91 [e:\win-2623\download\chromium\src\base\bind_internal.h @ 350]
002aeb18 1041644b libcef!base::Callback<void __cdecl(void)+0x2f [e:\win-2623\download\chromium\src\base\callback.h @ 394]
002aebcc 102e9d60 libcef!base::debug::TaskAnnotator::RunTask(char * queue_function = 0x20024264 "MessageLoop::PostTask", struct base::PendingTask * pending_task = 0x002aee10)+0x17b [e:\win-2623\download\chromium\src\base\debug\task_annotator.cc @ 53]
002aede0 102e9ed4 libcef!base::MessageLoop::RunTask(struct base::PendingTask * pending_task = 0x002aee10)+0x2c0 [e:\win-2623\download\chromium\src\base\message_loop\message_loop.cc @ 482]
002aedf0 102ea42d libcef!base::MessageLoop::DeferOrRunPendingTask(struct base::PendingTask * pending_task = 0x002aee10)+0x34 [e:\win-2623\download\chromium\src\base\message_loop\message_loop.cc @ 492]
002aee48 103f9244 libcef!base::MessageLoop::DoWork(void)+0xdd [e:\win-2623\download\chromium\src\base\message_loop\message_loop.cc @ 601]
002aef58 102e98bf libcef!base::MessagePumpDefault::Run(class base::MessagePump::Delegate * delegate = 0x00621a60)+0xf4 [e:\win-2623\download\chromium\src\base\message_loop\message_pump_default.cc @ 33]
002af040 10354ba6 libcef!base::MessageLoop::RunHandler(void)+0x12f [e:\win-2623\download\chromium\src\base\message_loop\message_loop.cc @ 444]
002af074 102e82cd libcef!base::RunLoop::Run(void)+0x46 [e:\win-2623\download\chromium\src\base\run_loop.cc @ 57]
002af168 17ef4ff9 libcef!base::MessageLoop::Run(void)+0xed [e:\win-2623\download\chromium\src\base\message_loop\message_loop.cc @ 288]
002af4e8 160e04ae libcef!content::RendererMain(struct content::MainFunctionParams * parameters = 0x002af760)+0x559 [e:\win-2623\download\chromium\src\content\renderer\renderer_main.cc @ 234]
002af5bc 160e039a libcef!content::RunNamedProcessTypeMain(class std::basic_string<char,std::char_traits<char>,std::allocator<char> > * process_type = 0x002af774, struct content::MainFunctionParams * main_function_params = 0x002af760, class content::ContentMainDelegate * delegate = 0x002af824)+0x95 [e:\win-2623\download\chromium\src\content\app\content_main_runner.cc @ 382]
002af7a0 160dea11 libcef!content::ContentMainRunnerImpl::Run(void)+0x1d2 [e:\win-2623\download\chromium\src\content\app\content_main_runner.cc @ 787]
002af7d0 129a4c8b libcef!content::ContentMain(struct content::ContentMainParams * params = 0x002af7fc)+0x8b [e:\win-2623\download\chromium\src\content\app\content_main.cc @ 19]
002af8f8 128c464d libcef!CefExecuteProcess(class CefMainArgs * args = 0x002af9e0, class CefRefPtr<CefApp> application = class CefRefPtr<CefApp>, void * windows_sandbox_info = 0x002af814)+0x14b [e:\win-2623\download\chromium\src\cef\libcef\browser\context.cc @ 118]
002af9f0 0122897d libcef!cef_execute_process(struct _cef_main_args_t * args = 0x002afb84, struct _cef_app_t * application = 0x004a29e8, void * windows_sandbox_info = 0x00000000)+0xfd [e:\win-2623\download\chromium\src\cef\libcef_dll\libcef_dll.cc @ 144]
002afadc 011e2176 qtclient!CefExecuteProcess(class CefMainArgs * args = 0x002afb80, class CefRefPtr<CefApp> application = class CefRefPtr<CefApp>, void * windows_sandbox_info = 0x00000000)+0x11d [e:\work\cef\cef_binary_3.2623.1401.gb90a3be_windows32\libcef_dll\wrapper\libcef_dll_wrapper.cc @ 146]
002afc8c 011f88af qtclient!CefInit(int * argc = 0x002afcec, char ** argv = 0x0048bfa8)+0x146 [e:\work\cefwork\qtclient\cef_manager.cpp @ 69]
002afce4 012f74ed qtclient!main(int argc = 0n16, char ** argv = 0x0048bfa8)+0x4f [e:\work\cefwork\qtclient\main.cpp @ 70]
002afd18 012f18d0 qtclient!WinMain(struct HINSTANCE__ * __formal = 0x010f0000, struct HINSTANCE__ * __formal = 0x00000000, char * __formal = 0x005d58e2 "--type=renderer --no-sandbox --lang=en-US --lang=en-US --log-file="E:\work\cefwork\cef_vs2010_build\bin\debug\debug.log" --log-severity=disable --disable-extensions --disable-pdf-extension --disable-spell-checking --device-scale-factor=1 --num-raster-threads=4 --content-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553 --channel="4036.1.898202590\859637505" /prefetch:1", int __formal = 0n5)+0xad [c:\work\build\qt5_workdir\w\s\qtbase\src\winmain\qtmain_win.cpp @ 113]
002afdc0 012f165f qtclient!__tmainCRTStartup(void)+0x260 [f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 547]
002afdc8 7659338a qtclient!WinMainCRTStartup(void)+0xf [f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 371]
WARNING: Stack unwind information not available. Following frames may be wrong.
002afdd4 7710a242 kernel32!BaseThreadInitThunk+0x12
002afe14 7710a215 ntdll32!RtlInitializeExceptionChain+0x63
002afe2c 00000000 ntdll32!RtlInitializeExceptionChain+0x36
softarts
Techie
 
Posts: 13
Joined: Tue Aug 02, 2016 3:47 am

Re: reload cause render process crash

Postby softarts » Tue Aug 23, 2016 2:10 am

I understand V8 handler is invalid, but how to fix it?

#define CEF_V8_HANDLE_IS_VALID() (handle_.get() && handle_->IsValid())
#define CEF_V8_REQUIRE_VALID_HANDLE_RETURN(ret) \
CEF_V8_REQUIRE_MLT_RETURN(ret); \
if (!CEF_V8_HANDLE_IS_VALID()) { \
NOTREACHED() << "V8 handle is not valid"; \
return ret; \
}
softarts
Techie
 
Posts: 13
Joined: Tue Aug 02, 2016 3:47 am

Re: reload cause render process crash

Postby magreenblatt » Tue Aug 23, 2016 7:15 am

What OS and CEF version? Does the crash reproduce in cefclient?
magreenblatt
Site Admin
 
Posts: 12408
Joined: Fri May 29, 2009 6:57 pm

Re: reload cause render process crash

Postby softarts » Tue Aug 23, 2016 10:20 am

windows7 , CEF 2623
does cefclient implement render /browser IPC with message router(CefMessageRouterBrowserSide)?
softarts
Techie
 
Posts: 13
Joined: Tue Aug 02, 2016 3:47 am

Re: reload cause render process crash

Postby magreenblatt » Tue Aug 23, 2016 10:36 am

softarts wrote:windows7 , CEF 2623
does cefclient implement render /browser IPC with message router(CefMessageRouterBrowserSide)?

Yes, load http://tests/binding
magreenblatt
Site Admin
 
Posts: 12408
Joined: Fri May 29, 2009 6:57 pm

Re: reload cause render process crash

Postby softarts » Tue Aug 23, 2016 11:01 pm

cefclient is good
so it is my problem...but where is it?
I have compared with client_handler.cc and client_renderer.cc of cefclient
generally the message_router_ code are same.
except I don't handle virtual void OnFocusedNodeChanged in client_renderer.cc
softarts
Techie
 
Posts: 13
Joined: Tue Aug 02, 2016 3:47 am

Re: reload cause render process crash

Postby magreenblatt » Wed Aug 24, 2016 2:44 am

Are you calling all of the methods required by CefMessageRouter*?
magreenblatt
Site Admin
 
Posts: 12408
Joined: Fri May 29, 2009 6:57 pm

Re: reload cause render process crash

Postby softarts » Thu Aug 25, 2016 6:34 am

yes I called all message_router_ methods in the below two class:
class ClientHandler : public CefClient,
public CefContextMenuHandler,
public CefDisplayHandler,
public CefDownloadHandler,
public CefDragHandler,
public CefGeolocationHandler,
public CefKeyboardHandler,
public CefLifeSpanHandler,
public CefLoadHandler,
public CefRequestHandler

class ClientApp : public CefApp,
public CefBrowserProcessHandler,
public CefRenderProcessHandler


after page is reloaded, it is quite strange that I must click the input text field twice to set focus on it.
input cursor doesn't appear after the first click, looks something wrong in render process?
softarts
Techie
 
Posts: 13
Joined: Tue Aug 02, 2016 3:47 am

Re: reload cause render process crash

Postby softarts » Fri Aug 26, 2016 3:04 am

if I wrote this in my cef init function, it will cause the issue.
Code: Select all
    CefRefPtr<CefApp> app = new ClientApp();
    int exit_code = CefExecuteProcess(main_args, app.get(), NULL);
    if (exit_code >= 0)
        return exit_code;
    ...CefInitialize(...)

if I separate browse and renderer(just as cefclient), it works.
Code: Select all
    CefRefPtr<CefApp> app;
    if (!command_line->HasSwitch("type"))
    {
        app = new ClientAppBrowser();
    }
    else
    {
        const std::string& type = command_line->GetSwitchValue("type");
        if (type == "renderer")
        {
            app = new ClientAppRenderer();   
        }
        else
        {
            app = new ClientAppOther();
        }
        int exit_code = CefExecuteProcess(main_args, app.get(), NULL);
        if (exit_code >= 0)
            return exit_code;
    }


basically ClientApp is combination of ClientAppRenderer and ClientAppBrowser:
Code: Select all
class ClientApp : public CefApp,                 
                  public CefBrowserProcessHandler,
                  public CefRenderProcessHandler
{                 
public: 
    ClientApp();

    virtual void OnBeforeCommandLineProcessing(
      const CefString& process_type,
      CefRefPtr<CefCommandLine> command_line); 

    virtual void OnContextInitialized() OVERRIDE; 

    void OnContextReleased(CefRefPtr<CefBrowser> app,
                        CefRefPtr<CefBrowser> browser,
                        CefRefPtr<CefFrame> frame,
                        CefRefPtr<CefV8Context> context);

   CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() OVERRIDE;

   void OnContextCreated(
        CefRefPtr<CefBrowser> browser,
        CefRefPtr<CefFrame> frame,
        CefRefPtr<CefV8Context> context);

   virtual void OnWebKitInitialized() OVERRIDE;

   bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
                                CefProcessId source_process,
                                CefRefPtr<CefProcessMessage> message);

   void OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
                            CefRefPtr<CefFrame> frame,
                            CefRefPtr<CefDOMNode> node) OVERRIDE;
 private:
    CefRefPtr<CefMessageRouterRendererSide> render_message_router_;
    bool last_node_is_editable_;
    // Include the default reference counting implementation.
    IMPLEMENT_REFCOUNTING(ClientApp);
};


any thought?
softarts
Techie
 
Posts: 13
Joined: Tue Aug 02, 2016 3:47 am

Re: reload cause render process crash

Postby magreenblatt » Fri Aug 26, 2016 3:31 am

What is your ClientApp implementation?
magreenblatt
Site Admin
 
Posts: 12408
Joined: Fri May 29, 2009 6:57 pm

Next

Return to Support Forum

Who is online

Users browsing this forum: No registered users and 48 guests