chromiumembedded / cef

Chromium Embedded Framework (CEF). A simple framework for embedding Chromium-based browsers in other applications.
https://bitbucket.org/chromiumembedded/cef/
Other
3.27k stars 456 forks source link

cefclient crash on javascript alert message #1789

Closed magreenblatt closed 8 years ago

magreenblatt commented 8 years ago

Original report by JORGE EMMANUEL (Bitbucket: e.jorge).


Download CEF 3.2526.1361.g456ea5a, build cefclient and run it (windows 7, cmake -G "Visual Studio 2013"). Go to "http://tests/dialogs" or select "Tests" menu, then "Other Tests", click "Dialogs" link. Finaly, click the "Show alert" button and see the crash.

magreenblatt commented 8 years ago

Original comment by JORGE EMMANUEL (Bitbucket: e.jorge).


The crash comes from a fatal error in IdleTimeEstimator::DidProcessTask (src\components\scheduler\renderer\idle_time_estimator.cc ) when DCHECK_EQ(nestinglevel, 1) : nestinglevel is equal to 2.

magreenblatt commented 8 years ago

This is a debug assertion in the renderer process that has already fixed in https://code.google.com/p/chromium/issues/detail?id=543894. Full call stack:

[1214/150142:FATAL:idle_time_estimator.cc(61)] Check failed: nesting_level_ == 1 (2 vs. 1)

>   libcef.dll!base::debug::BreakDebugger() Line 21 C++
    libcef.dll!logging::LogMessage::~LogMessage() Line 604  C++
    libcef.dll!scheduler::IdleTimeEstimator::DidProcessTask(const base::PendingTask & pending_task) Line 62 C++
    libcef.dll!scheduler::internal::TaskQueueImpl::NotifyDidProcessTask(const base::PendingTask & pending_task) Line 465    C++
    libcef.dll!scheduler::TaskQueueManager::ProcessTaskFromWorkQueue(scheduler::internal::TaskQueueImpl * queue, scheduler::internal::TaskQueueImpl::Task * out_previous_task) Line 378 C++
    libcef.dll!scheduler::TaskQueueManager::DoWork(bool decrement_pending_dowork_count) Line 293    C++
    libcef.dll!base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>::Run(scheduler::TaskQueueManager * object, const bool & <args_0>) Line 176   C++
    libcef.dll!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>,base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager> const &,bool const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)> runnable, const base::WeakPtr<scheduler::TaskQueueManager> & weak_ptr, const bool & <args_0>) Line 304 C++
    libcef.dll!base::internal::Invoker<base::IndexSequence<0,1>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>,void __cdecl(scheduler::TaskQueueManager *,bool),base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager>,bool> >,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<scheduler::TaskQueueManager> >,base::internal::UnwrapTraits<bool> >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>,base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager> const &,bool const &> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base) Line 346  C++
    libcef.dll!base::Callback<void __cdecl(void)>::Run() Line 396   C++
    libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, const base::PendingTask & pending_task) Line 53 C++
    libcef.dll!base::MessageLoop::RunTask(const base::PendingTask & pending_task) Line 477  C++
    libcef.dll!base::MessageLoop::DeferOrRunPendingTask(const base::PendingTask & pending_task) Line 487    C++
    libcef.dll!base::MessageLoop::DoWork() Line 596 C++
    libcef.dll!base::MessagePumpDefault::Run(base::MessagePump::Delegate * delegate) Line 32    C++
    libcef.dll!base::MessageLoop::RunHandler() Line 439 C++
    libcef.dll!base::RunLoop::Run() Line 56 C++
    libcef.dll!base::MessageLoop::Run() Line 283    C++
    libcef.dll!IPC::SyncChannel::WaitForReplyWithNestedMessageLoop(IPC::SyncChannel::SyncContext * context) Line 565    C++
    libcef.dll!IPC::SyncChannel::WaitForReply(IPC::SyncChannel::SyncContext * context, base::WaitableEvent * pump_messages_event) Line 529  C++
    libcef.dll!IPC::SyncChannel::Send(IPC::Message * message) Line 503  C++
    libcef.dll!content::ChildThreadImpl::Send(IPC::Message * msg) Line 562  C++
    libcef.dll!content::RenderThreadImpl::Send(IPC::Message * msg) Line 915 C++
    libcef.dll!content::RenderWidget::Send(IPC::Message * message) Line 749 C++
    libcef.dll!content::RenderViewImpl::Send(IPC::Message * message) Line 2189  C++
    libcef.dll!content::RenderViewImpl::SendAndRunNestedMessageLoop(IPC::SyncMessage * message) Line 1515   C++
    libcef.dll!content::RenderFrameImpl::RunJavaScriptMessage(content::JavaScriptMessageType type, const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & message, const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & default_value, const GURL & frame_url, std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * result) Line 1846    C++
    libcef.dll!content::RenderFrameImpl::runModalAlertDialog(const blink::WebString & message) Line 3143    C++
    libcef.dll!blink::ChromeClientImpl::openJavaScriptAlertDelegate(blink::LocalFrame * frame, const WTF::String & message) Line 440    C++
    libcef.dll!blink::openJavaScriptDialog<>(blink::ChromeClient * chromeClient, bool (blink::LocalFrame *, const WTF::String &) * function, blink::LocalFrame & frame, const WTF::String & message, blink::ChromeClient::DialogType dialogType) Line 95    C++
    libcef.dll!blink::ChromeClient::openJavaScriptAlert(blink::LocalFrame * frame, const WTF::String & message) Line 111    C++
    libcef.dll!blink::LocalDOMWindow::alert(const WTF::String & message) Line 811   C++
    libcef.dll!blink::DOMWindowV8Internal::alert2Method(const v8::FunctionCallbackInfo<v8::Value> & info) Line 5336 C++
    libcef.dll!blink::DOMWindowV8Internal::alertMethod(const v8::FunctionCallbackInfo<v8::Value> & info) Line 5353  C++
    libcef.dll!blink::DOMWindowV8Internal::alertMethodCallback(const v8::FunctionCallbackInfo<v8::Value> & info) Line 5368  C++
    libcef.dll!v8::internal::FunctionCallbackArguments::Call(void (const v8::FunctionCallbackInfo<v8::Value> &) * f) Line 34    C++
    libcef.dll!v8::internal::HandleApiCallHelper<0>(v8::internal::Isolate * isolate, v8::internal::`anonymous-namespace'::BuiltinArguments<1> & args) Line 1577 C++
    libcef.dll!v8::internal::Builtin_Impl_HandleApiCall(v8::internal::`anonymous-namespace'::BuiltinArguments<1> args, v8::internal::Isolate * isolate) Line 1599   C++
    libcef.dll!v8::internal::Builtin_HandleApiCall(int args_length, v8::internal::Object * * args_object, v8::internal::Isolate * isolate) Line 1594    C++
    [External Code] 
    [Frames below may be incorrect and/or missing]  
    libcef.dll!v8::internal::`anonymous namespace'::Invoke(v8::internal::Isolate * isolate, bool is_construct, v8::internal::Handle<v8::internal::Object> target, v8::internal::Handle<v8::internal::Object> receiver, int argc, v8::internal::Handle<v8::internal::Object> * args, v8::internal::Handle<v8::internal::Object> new_target) Line 98  C++
    libcef.dll!v8::internal::Execution::Call(v8::internal::Isolate * isolate, v8::internal::Handle<v8::internal::Object> callable, v8::internal::Handle<v8::internal::Object> receiver, int argc, v8::internal::Handle<v8::internal::Object> * argv) Line 168   C++
    libcef.dll!v8::Function::Call(v8::Local<v8::Context> context, v8::Local<v8::Value> recv, int argc, v8::Local<v8::Value> * argv) Line 4364   C++
    libcef.dll!blink::V8ScriptRunner::callFunction(v8::Local<v8::Function> function, blink::ExecutionContext * context, v8::Local<v8::Value> receiver, int argc, v8::Local<v8::Value> * args, v8::Isolate * isolate) Line 442   C++
    libcef.dll!blink::ScriptController::callFunction(blink::ExecutionContext * context, v8::Local<v8::Function> function, v8::Local<v8::Value> receiver, int argc, v8::Local<v8::Value> * info, v8::Isolate * isolate) Line 159 C++
    libcef.dll!blink::ScriptController::callFunction(v8::Local<v8::Function> function, v8::Local<v8::Value> receiver, int argc, v8::Local<v8::Value> * info) Line 154   C++
    libcef.dll!blink::V8LazyEventListener::callListenerFunction(blink::ScriptState * scriptState, v8::Local<v8::Value> jsEvent, blink::Event * event) Line 101  C++
    libcef.dll!blink::V8AbstractEventListener::invokeEventHandler(blink::ScriptState * scriptState, blink::Event * event, v8::Local<v8::Value> jsEvent) Line 128    C++
    libcef.dll!blink::V8AbstractEventListener::handleEvent(blink::ScriptState * scriptState, blink::Event * event) Line 101 C++
    libcef.dll!blink::V8AbstractEventListener::handleEvent(blink::ExecutionContext * executionContext, blink::Event * event) Line 85    C++
    libcef.dll!blink::EventTarget::fireEventListeners(blink::Event * event, blink::EventTargetData * d, WTF::Vector<blink::RegisteredEventListener,1,WTF::DefaultAllocator> & entry) Line 368   C++
    libcef.dll!blink::EventTarget::fireEventListeners(blink::Event * event) Line 294    C++
    libcef.dll!blink::Node::handleLocalEvents(blink::Event & event) Line 1981   C++
    libcef.dll!blink::NodeEventContext::handleLocalEvents(blink::Event & event) Line 67 C++
    libcef.dll!blink::EventDispatcher::dispatchEventAtTarget() Line 172 C++
    libcef.dll!blink::EventDispatcher::dispatch() Line 126  C++
    libcef.dll!blink::MouseEventDispatchMediator::dispatchEvent(blink::EventDispatcher & dispatcher) Line 284   C++
    libcef.dll!blink::EventDispatcher::dispatchEvent(blink::Node & node, WTF::PassRefPtr<blink::EventDispatchMediator> mediator) Line 50    C++
    libcef.dll!blink::Node::dispatchEventInternal(WTF::PassRefPtr<blink::Event> event) Line 1991    C++
    libcef.dll!blink::EventTarget::dispatchEvent(WTF::PassRefPtr<blink::Event> event) Line 203  C++
    libcef.dll!blink::Node::dispatchMouseEvent(const blink::PlatformMouseEvent & nativeEvent, const WTF::AtomicString & eventType, int detail, blink::Node * relatedTarget) Line 2025   C++
    libcef.dll!blink::EventHandler::dispatchMouseEvent(const WTF::AtomicString & eventType, blink::Node * targetNode, int clickCount, const blink::PlatformMouseEvent & mouseEvent) Line 1629   C++
    libcef.dll!blink::EventHandler::handleMouseReleaseEvent(const blink::PlatformMouseEvent & mouseEvent) Line 1274 C++
    libcef.dll!blink::PageWidgetEventHandler::handleMouseUp(blink::LocalFrame & mainFrame, const blink::WebMouseEvent & event) Line 207 C++
    libcef.dll!blink::WebViewImpl::handleMouseUp(blink::LocalFrame & mainFrame, const blink::WebMouseEvent & event) Line 633    C++
    libcef.dll!blink::PageWidgetDelegate::handleInputEvent(blink::PageWidgetEventHandler & handler, const blink::WebInputEvent & event, blink::LocalFrame * root) Line 138  C++
    libcef.dll!blink::WebViewImpl::handleInputEvent(const blink::WebInputEvent & inputEvent) Line 2168  C++
    libcef.dll!content::RenderWidget::OnHandleInputEvent(const blink::WebInputEvent * input_event, const ui::LatencyInfo & latency_info, bool is_keyboard_shortcut) Line 1154   C++
    libcef.dll!base::DispatchToMethodImpl<content::RenderWidget,void (__thiscall content::RenderWidget::*)(blink::WebInputEvent const *,ui::LatencyInfo const &,bool),blink::WebInputEvent const *,ui::LatencyInfo,bool,0,1,2>(content::RenderWidget * obj, void (const blink::WebInputEvent *, const ui::LatencyInfo &, bool) * method, const base::Tuple<blink::WebInputEvent const *,ui::LatencyInfo,bool> & arg, base::IndexSequence<0,1,2> __formal) Line 254  C++
    libcef.dll!base::DispatchToMethod<content::RenderWidget,void (__thiscall content::RenderWidget::*)(blink::WebInputEvent const *,ui::LatencyInfo const &,bool),blink::WebInputEvent const *,ui::LatencyInfo,bool>(content::RenderWidget * obj, void (const blink::WebInputEvent *, const ui::LatencyInfo &, bool) * method, const base::Tuple<blink::WebInputEvent const *,ui::LatencyInfo,bool> & arg) Line 261 C++
    libcef.dll!InputMsg_HandleInputEvent::Dispatch<content::RenderWidget,content::RenderWidget,void,void (__thiscall content::RenderWidget::*)(blink::WebInputEvent const *,ui::LatencyInfo const &,bool)>(const IPC::Message * msg, content::RenderWidget * obj, content::RenderWidget * sender, void * parameter, void (const blink::WebInputEvent *, const ui::LatencyInfo &, bool) * func) Line 122 C++
    libcef.dll!content::RenderWidget::OnMessageReceived(const IPC::Message & message) Line 702  C++
    libcef.dll!content::RenderViewImpl::OnMessageReceived(const IPC::Message & message) Line 1378   C++
    libcef.dll!content::MessageRouter::RouteMessage(const IPC::Message & msg) Line 54   C++
    libcef.dll!content::MessageRouter::OnMessageReceived(const IPC::Message & msg) Line 46  C++
    libcef.dll!content::ChildThreadImpl::OnMessageReceived(const IPC::Message & msg) Line 656   C++
    libcef.dll!base::internal::RunnableAdapter<bool (__thiscall content::ChildThreadImpl::*)(IPC::Message const &)>::Run(content::ChildThreadImpl * object, const IPC::Message & <args_0>) Line 176 C++
    libcef.dll!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<bool (__thiscall content::ChildThreadImpl::*)(IPC::Message const &)>,base::internal::TypeList<content::RenderThreadImpl *,IPC::Message const &> >::MakeItSo(base::internal::RunnableAdapter<bool (__thiscall content::ChildThreadImpl::*)(IPC::Message const &)> runnable, content::RenderThreadImpl * <args_0>, const IPC::Message & <args_1>) Line 294 C++
    libcef.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<bool (__thiscall content::ChildThreadImpl::*)(IPC::Message const &)>,void __cdecl(content::ChildThreadImpl *,IPC::Message const &),base::internal::TypeList<base::internal::UnretainedWrapper<content::RenderThreadImpl> > >,base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<content::RenderThreadImpl> > >,base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<bool (__thiscall content::ChildThreadImpl::*)(IPC::Message const &)>,base::internal::TypeList<content::RenderThreadImpl *,IPC::Message const &> >,void __cdecl(IPC::Message const &)>::Run(base::internal::BindStateBase * base, const IPC::Message & <unbound_args_0>) Line 346    C++
    libcef.dll!base::Callback<void __cdecl(IPC::Message const &)>::Run(const IPC::Message & <args_0>) Line 396  C++
    libcef.dll!base::CancelableCallback<void __cdecl(IPC::Message const &)>::Forward(const IPC::Message & <args_0>) Line 106    C++
    libcef.dll!base::internal::RunnableAdapter<void (__thiscall base::CancelableCallback<void __cdecl(IPC::Message const &)>::*)(IPC::Message const &)const >::Run(const base::CancelableCallback<void __cdecl(IPC::Message const &)> * object, const IPC::Message & <args_0>) Line 196 C++
    libcef.dll!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall base::CancelableCallback<void __cdecl(IPC::Message const &)>::*)(IPC::Message const &)const >,base::internal::TypeList<base::WeakPtr<base::CancelableCallback<void __cdecl(IPC::Message const &)> > const &,IPC::Message const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall base::CancelableCallback<void __cdecl(IPC::Message const &)>::*)(IPC::Message const &)const > runnable, const base::WeakPtr<base::CancelableCallback<void __cdecl(IPC::Message const &)> > & weak_ptr, const IPC::Message & <args_0>) Line 304   C++
    libcef.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall base::CancelableCallback<void __cdecl(IPC::Message const &)>::*)(IPC::Message const &)const >,void __cdecl(base::CancelableCallback<void __cdecl(IPC::Message const &)> const *,IPC::Message const &),base::internal::TypeList<base::WeakPtr<base::CancelableCallback<void __cdecl(IPC::Message const &)> > > >,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<base::CancelableCallback<void __cdecl(IPC::Message const &)> > > >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall base::CancelableCallback<void __cdecl(IPC::Message const &)>::*)(IPC::Message const &)const >,base::internal::TypeList<base::WeakPtr<base::CancelableCallback<void __cdecl(IPC::Message const &)> > const &,IPC::Message const &> >,void __cdecl(IPC::Message const &)>::Run(base::internal::BindStateBase * base, const IPC::Message & <unbound_args_0>) Line 346 C++
    libcef.dll!base::Callback<void __cdecl(IPC::Message const &)>::Run(const IPC::Message & <args_0>) Line 396  C++
    libcef.dll!base::internal::InvokeHelper<0,void,base::Callback<void __cdecl(IPC::Message const &)>,base::internal::TypeList<IPC::Message const &> >::MakeItSo(base::Callback<void __cdecl(IPC::Message const &)> runnable, const IPC::Message & <args_0>) Line 294   C++
    libcef.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::Callback<void __cdecl(IPC::Message const &)>,void __cdecl(IPC::Message const &),base::internal::TypeList<IPC::Message> >,base::internal::TypeList<base::internal::UnwrapTraits<IPC::Message> >,base::internal::InvokeHelper<0,void,base::Callback<void __cdecl(IPC::Message const &)>,base::internal::TypeList<IPC::Message const &> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base) Line 346    C++
    libcef.dll!base::Callback<void __cdecl(void)>::Run() Line 396   C++
    libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, const base::PendingTask & pending_task) Line 53 C++
    libcef.dll!scheduler::TaskQueueManager::ProcessTaskFromWorkQueue(scheduler::internal::TaskQueueImpl * queue, scheduler::internal::TaskQueueImpl::Task * out_previous_task) Line 369 C++
    libcef.dll!scheduler::TaskQueueManager::DoWork(bool decrement_pending_dowork_count) Line 293    C++
    libcef.dll!base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>::Run(scheduler::TaskQueueManager * object, const bool & <args_0>) Line 176   C++
    libcef.dll!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>,base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager> const &,bool const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)> runnable, const base::WeakPtr<scheduler::TaskQueueManager> & weak_ptr, const bool & <args_0>) Line 304 C++
    libcef.dll!base::internal::Invoker<base::IndexSequence<0,1>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>,void __cdecl(scheduler::TaskQueueManager *,bool),base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager>,bool> >,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<scheduler::TaskQueueManager> >,base::internal::UnwrapTraits<bool> >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(bool)>,base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager> const &,bool const &> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base) Line 346  C++
    libcef.dll!base::Callback<void __cdecl(void)>::Run() Line 396   C++
    libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, const base::PendingTask & pending_task) Line 53 C++
    libcef.dll!base::MessageLoop::RunTask(const base::PendingTask & pending_task) Line 477  C++
    libcef.dll!base::MessageLoop::DeferOrRunPendingTask(const base::PendingTask & pending_task) Line 487    C++
    libcef.dll!base::MessageLoop::DoWork() Line 596 C++
    libcef.dll!base::MessagePumpDefault::Run(base::MessagePump::Delegate * delegate) Line 32    C++
    libcef.dll!base::MessageLoop::RunHandler() Line 439 C++
    libcef.dll!base::RunLoop::Run() Line 56 C++
    libcef.dll!base::MessageLoop::Run() Line 283    C++
    libcef.dll!content::RendererMain(const content::MainFunctionParams & parameters) Line 209   C++
    libcef.dll!content::RunNamedProcessTypeMain(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & process_type, const content::MainFunctionParams & main_function_params, content::ContentMainDelegate * delegate) Line 378  C++
    libcef.dll!content::ContentMainRunnerImpl::Run() Line 798   C++
    libcef.dll!content::ContentMain(const content::ContentMainParams & params) Line 19  C++
    libcef.dll!CefExecuteProcess(const CefMainArgs & args, CefRefPtr<CefApp> application, void * windows_sandbox_info) Line 99  C++
    libcef.dll!cef_execute_process(const _cef_main_args_t * args, _cef_app_t * application, void * windows_sandbox_info) Line 143   C++
    cefclient.exe!CefExecuteProcess(const CefMainArgs & args, CefRefPtr<CefApp> application, void * windows_sandbox_info) Line 145  C++
    cefclient.exe!client::`anonymous namespace'::RunMain(HINSTANCE__ * hInstance, int nCmdShow) Line 64 C++
    cefclient.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) Line 125    C++
magreenblatt commented 8 years ago