[SOLVED] Assertion fails when navigating to Google Drive

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.

[SOLVED] Assertion fails when navigating to Google Drive

Postby digory » Wed Nov 30, 2016 10:27 am

To test CEF and my integration into our application, I randomly followed links. When I tried https://drive.google.com, an assertion within CEF failed. Here's the log:-

Code: Select all
[1130/161207:ERROR:dxva_video_decode_accelerator_win.cc(345)] The eglQueryDeviceAttribEXT function failed to g
[1130/161207:ERROR:mf_helpers.cc(12)] Error in dxva_video_decode_accelerator_win.cc on line 345
[1130/161214:INFO:kiscefclient.cpp(173)] KisCefClient::OnLoadingStateChange: isLoading=true
[1130/161214:INFO:kiscefapp.cpp(152)] KisCefApp::OnBrowserCreated: 1
[1130/161214:ERROR:singleton_hwnd.cc(34)] Cannot create windows on non-UI thread!
[1130/161215:INFO:kiscefclient.cpp(211)] KisCefClient::OnAddressChange: http://www.google.ch/?gfe_rd=cr&ei=S-w
[1130/161215:INFO:kiscefapp.cpp(176)] KisCefApp::OnContextCreated
[1130/161215:INFO:kiscefclient.cpp(173)] KisCefClient::OnLoadingStateChange: isLoading=false
[1130/161318:INFO:kiscefclient.cpp(173)] KisCefClient::OnLoadingStateChange: isLoading=true
[1130/161318:INFO:kiscefapp.cpp(176)] KisCefApp::OnContextCreated
[1130/161318:INFO:kiscefclient.cpp(211)] KisCefClient::OnAddressChange: https://drive.google.com/?tab=wo
[1130/161318:FATAL:url_request_http_job.cc(137)] Check failed: false.


Here's the stack trace:-

Code: Select all
libcef.dll!logging::LogMessage::~LogMessage() Line 748  C++
libcef.dll!`anonymous namespace'::LogChannelIDAndCookieStores(const GURL & url, const net::URLRequestContext *
libcef.dll!net::URLRequestHttpJob::OnStartCompleted(int result) Line 1006       C++
libcef.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall FaviconWebUIHandler::*)(base::Li
libcef.dll!net::HttpCache::Transaction::DoLoop(int result) Line 871     C++
libcef.dll!base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall media::DXVAVideoDecodeAccelerator::
libcef.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall content::`anonymous namespace'::
libcef.dll!net::HttpNetworkTransaction::DoCallback(int rv) Line 630     C++
libcef.dll!net::HttpNetworkTransaction::OnIOComplete(int result) Line 636       C++
libcef.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall UserManagerScreenHandler::*)(bas
libcef.dll!net::SpdyHttpStream::DoResponseCallback(int rv) Line 580     C++
libcef.dll!net::SpdyHttpStream::OnResponseHeadersUpdated(const net::SpdyHeaderBlock & response_headers) Line 3
libcef.dll!net::SpdyStream::MergeWithResponseHeaders(const net::SpdyHeaderBlock & new_response_headers) Line 9
libcef.dll!net::SpdyStream::OnInitialResponseHeadersReceived(const net::SpdyHeaderBlock & initial_response_hea
libcef.dll!net::SpdySession::OnInitialResponseHeadersReceived(const net::SpdyHeaderBlock & response_headers, b
libcef.dll!net::SpdySession::OnHeaders(unsigned int stream_id, bool has_priority, int weight, unsigned int par
libcef.dll!net::BufferedSpdyFramer::OnHeaderFrameEnd(unsigned int stream_id, bool end_headers) Line 202 C++
libcef.dll!net::SpdyFramer::ProcessControlFrameHeaderBlock(const char * data, unsigned int data_len, bool is_h
libcef.dll!net::SpdyFramer::ProcessInput(const char * data, unsigned int len) Line 674  C++
libcef.dll!net::SpdySession::DoReadComplete(int result) Line 1382       C++
libcef.dll!net::SpdySession::DoReadLoop(net::SpdySession::ReadState expected_read_state, int result) Line 1308
libcef.dll!net::SpdySession::PumpReadLoop(net::SpdySession::ReadState expected_read_state, int result) Line 12
libcef.dll!base::internal::FunctorTraits<void (__thiscall content::PermissionServiceImpl::*)(int,enum blink::m
libcef.dll!base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall content::PermissionServiceImpl::*co
libcef.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall content::PermissionServiceImpl::
libcef.dll!net::SSLClientSocketImpl::DoReadCallback(int rv) Line 1084   C++
libcef.dll!net::SSLClientSocketImpl::OnRecvComplete(int result) Line 1441       C++
libcef.dll!net::SSLClientSocketImpl::BufferRecvComplete(int result) Line 1753   C++
libcef.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall FaviconWebUIHandler::*)(base::Li
libcef.dll!net::TCPClientSocket::DidCompleteReadWrite(const base::Callback<void __cdecl(int),1> & callback, in
libcef.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall password_manager::CredentialMana
libcef.dll!net::TCPSocketWin::DidSignalRead() Line 1004 C++
libcef.dll!net::TCPSocketWin::Core::ReadDelegate::OnObjectSignaled(void * object) Line 230      C++
libcef.dll!base::win::ObjectWatcher::Signal(base::win::ObjectWatcher::Delegate * delegate) Line 126     C++
libcef.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall base::win::ObjectWatcher::*)(bas
libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, const base::PendingTask & pending_
libcef.dll!base::MessageLoop::RunTask(const base::PendingTask & pending_task) Line 486  C++
libcef.dll!base::MessageLoop::DoWork() Line 618 C++
libcef.dll!base::MessagePumpForIO::DoRunLoop() Line 735 C++
libcef.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 142   C++
libcef.dll!base::MessageLoop::RunHandler() Line 449     C++
libcef.dll!base::RunLoop::Run() Line 36 C++
libcef.dll!base::Thread::Run(base::RunLoop * run_loop) Line 229 C++
libcef.dll!content::BrowserThreadImpl::IOThreadRun(base::RunLoop * run_loop) Line 244   C++
libcef.dll!content::BrowserThreadImpl::Run(base::RunLoop * run_loop) Line 278   C++
libcef.dll!base::Thread::ThreadMain() Line 304  C++
libcef.dll!base::`anonymous namespace'::ThreadFunc(void * params) Line 86       C++
[External Code]
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]     


I tried the same in cefsimple and cefclient example applications, and there it works with no assertion failure. Any ideas what could cause the problem?
Last edited by digory on Thu Dec 01, 2016 9:20 am, edited 1 time in total.
digory
Expert
 
Posts: 118
Joined: Wed Oct 26, 2016 3:13 am

Re: Assertion fails when navigating to Google Drive

Postby Czarek » Wed Nov 30, 2016 11:10 am

This line in Chromium: https://cs.chromium.org/chromium/src/me ... mium&l=345

What settings and command line flags are you using? Are you using OSR mode?
Maintainer of the CEF Python, PHP Desktop and CEF C API projects. My LinkedIn.
User avatar
Czarek
Virtuoso
 
Posts: 1927
Joined: Sun Nov 06, 2011 2:12 am

Re: Assertion fails when navigating to Google Drive

Postby digory » Wed Nov 30, 2016 11:53 am

That's not the assertion I meant. That one fails also, but it does not seem to cause any problem. Seems to be related to WebGL. What is OSR mode?

The one that bothers me is this one:

Code: Select all
[1130/161318:FATAL:url_request_http_job.cc(137)] Check failed: false.


Since its FATAL, it will cause the application to shutdown immediately even in Release mode.
digory
Expert
 
Posts: 118
Joined: Wed Oct 26, 2016 3:13 am

Re: Assertion fails when navigating to Google Drive

Postby digory » Wed Nov 30, 2016 11:57 am

These are my settings:

Code: Select all
   ::CefEnableHighDPISupport();
   g_Singleton = new KisCefApp();

   ::CefMainArgs mainArgs (hinst);
   nExitCode = ::CefExecuteProcess (mainArgs, g_Singleton, NULL);
   
   if (nExitCode >= 0)
      {
      return nExitCode;
      }

   CefSettings settings;
   settings.command_line_args_disabled = true;
   settings.no_sandbox = true;
   settings.multi_threaded_message_loop = true;
   settings.persist_session_cookies = false;
   settings.persist_user_preferences = false;
   settings.background_color = CefColorSetARGB (0xff, 0xf0, 0xf0, 0xf0);
   
   // log_severity: Define what should be logged
   
#ifdef DEBUG
   settings.log_severity = LOGSEVERITY_INFO;
#else
   settings.log_severity = LOGSEVERITY_ERROR;
#endif

   // log_file, cache_path, user_data_path

   PWSTR strLocalAppDataPath;
   HRESULT hres = ::SHGetKnownFolderPath (FOLDERID_LocalAppData, 0, NULL, &strLocalAppDataPath);

   if (hres == S_OK)
      {
      std::wstring strTmp = std::wstring (strLocalAppDataPath) + L"\\SomeProduct\\cef_log";
      cef_string_utf16_set (strTmp.c_str(), strTmp.size(), &settings.log_file, true);  // true = clone

      strTmp = std::wstring (strLocalAppDataPath) + L"\\SomeProduct\\cef_cache";
      cef_string_utf16_set (strTmp.c_str(), strTmp.size(), &settings.cache_path, true);  // true = clone

      strTmp = std::wstring (strLocalAppDataPath) + L"\\SomeProduct\\cef_user_data";
      cef_string_utf16_set (strTmp.c_str(), strTmp.size(), &settings.user_data_path, true);  // true = clone
      }

   ::CefInitialize (mainArgs, settings, g_Singleton.get(), NULL);
 
digory
Expert
 
Posts: 118
Joined: Wed Oct 26, 2016 3:13 am

Re: Assertion fails when navigating to Google Drive

Postby Czarek » Wed Nov 30, 2016 12:15 pm

digory wrote: What is OSR mode?

Off-screen-rendering (CefRenderHandler).

digory wrote:
Code: Select all
[1130/161318:FATAL:url_request_http_job.cc(137)] Check failed: false.




Checked Chromium source code and it seems this is happening in the LogChannelIDAndCookieStores() function. However Chromium master line 137 seem to be different, don't know what Chromium/CEF version you're using. This recent commit might be related: https://bitbucket.org/chromiumembedded/ ... 055bb9418c
Maintainer of the CEF Python, PHP Desktop and CEF C API projects. My LinkedIn.
User avatar
Czarek
Virtuoso
 
Posts: 1927
Joined: Sun Nov 06, 2011 2:12 am

Re: Assertion fails when navigating to Google Drive

Postby digory » Thu Dec 01, 2016 5:55 am

I'm currently using 3.2840.1493.g4e029f4 Win32 binary distribution. I tried moving on to 3.2883.1536.ga8ecb19, but I'm having some difficulties: http://magpcss.org/ceforum/viewtopic.php?f=6&t=14721

The failing function seems to be about cookies. I tried commenting out these settings:

Code: Select all
//   settings.persist_session_cookies = false;
//   settings.persist_user_preferences = false;
 


Unfortunately, I still get an assertion failure.
digory
Expert
 
Posts: 118
Joined: Wed Oct 26, 2016 3:13 am

Re: Assertion fails when navigating to Google Drive

Postby Czarek » Thu Dec 01, 2016 8:32 am

This was fixed in https://bitbucket.org/chromiumembedded/ ... okiestores
Update CEF version.
Maintainer of the CEF Python, PHP Desktop and CEF C API projects. My LinkedIn.
User avatar
Czarek
Virtuoso
 
Posts: 1927
Joined: Sun Nov 06, 2011 2:12 am

Re: Assertion fails when navigating to Google Drive

Postby digory » Thu Dec 01, 2016 9:19 am

OK, good to know! Thanks!
digory
Expert
 
Posts: 118
Joined: Wed Oct 26, 2016 3:13 am


Return to Support Forum

Who is online

Users browsing this forum: Devyre and 84 guests