Renderer process crash with OnNoMemory

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.

Renderer process crash with OnNoMemory

Postby Liosan » Wed Jul 20, 2016 9:33 am

Hello,

after upgrading to CEF 2623 we are experiencing a crash of the renderer process. The repro is as follows:
- launch our application
- resize the window containing the CEF control multiple times
- shutdown

The crash has the following stack trace:
Code: Select all
libcef.dll!logging::LogMessage::~LogMessage() Line 737   C++
    libcef.dll!base::`anonymous namespace'::OnNoMemory(unsigned int size) Line 20   C++
    libcef.dll!content::ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(unsigned int size, int id) Line 307   C++
    libcef.dll!content::ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(unsigned int size) Line 188   C++
>   libcef.dll!content::WebDiscardableMemoryImpl::CreateLockedMemory(unsigned int size) Line 23   C++
    libcef.dll!content::BlinkPlatformImpl::allocateAndLockDiscardableMemory(unsigned int bytes) Line 1257   C++
    libcef.dll!blink::PurgeableVector::reservePurgeableCapacity(unsigned int capacity, blink::PurgeableVector::PurgeableAllocationStrategy allocationStrategy) Line 236   C++
    libcef.dll!blink::PurgeableVector::append(const char * data, unsigned int length) Line 123   C++
    libcef.dll!blink::SharedBuffer::mergeSegmentsIntoBuffer() Line 313   C++
    libcef.dll!blink::SharedBuffer::unlock() Line 401   C++
    libcef.dll!blink::Resource::unlock() Line 453   C++
    libcef.dll!blink::Resource::unregisterHandle(blink::ResourcePtrBase * h) Line 917   C++
    libcef.dll!blink::ResourceOwner<blink::StyleSheetResource,blink::StyleSheetResourceClient>::setResource(const blink::ResourcePtr<blink::StyleSheetResource> & newResource) Line 93   C++
    libcef.dll!blink::LinkStyle::~LinkStyle() Line 493   C++
    libcef.dll!blink::LinkStyle::`scalar deleting destructor'(unsigned int)   C++
    libcef.dll!blink::HTMLLinkElement::~HTMLLinkElement() Line 168   C++
    libcef.dll!blink::HTMLLinkElement::`scalar deleting destructor'(unsigned int)   C++
    libcef.dll!blink::ContainerNode::removeDetachedChildrenInContainer(blink::ContainerNode & container) Line 497   C++
    libcef.dll!blink::Document::dispose() Line 599   C++
    libcef.dll!blink::Node::removedLastRef() Line 2185   C++
    libcef.dll!blink::LiveNodeListBase::~LiveNodeListBase() Line 63   C++
    libcef.dll!blink::HTMLCollection::~HTMLCollection() Line 186   C++
    libcef.dll!blink::HTMLTagCollection::`scalar deleting destructor'(unsigned int)   C++
    libcef.dll!blink::V8HTMLOptionsCollection::derefObject(blink::ScriptWrappable * scriptWrappable) Line 461   C++   libcef.dll!v8::internal::GlobalHandles::InvokeSecondPassPhantomCallbacks(v8::internal::List<v8::internal::GlobalHandles::PendingPhantomCallback,v8::internal::FreeStoreAllocationPolicy> * callbacks, v8::internal::Isolate * isolate) Line 823   C++
    libcef.dll!v8::internal::GlobalHandles::PendingPhantomCallbacksSecondPassTask::RunInternal() Line 541   C++
    libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, const base::PendingTask & pending_task) Line 51   C++
    libcef.dll!scheduler::TaskQueueManager::ProcessTaskFromWorkQueue(scheduler::internal::WorkQueue * work_queue, scheduler::internal::TaskQueueImpl::Task * out_previous_task) Line 268   C++
    libcef.dll!scheduler::TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) Line 180   C++
    libcef.dll!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall content::WebFileWriterBase::*)(__int64,bool)>,base::internal::TypeList<base::WeakPtr<content::WebFileWriterImpl> const &,__int64 const &,bool const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall content::WebFileWriterBase::*)(__int64,bool)> runnable, const base::WeakPtr<content::WebFileWriterImpl> & weak_ptr, const __int64 & <args_0>, const bool & <args_1>) Line 307   C++
    libcef.dll!base::internal::Invoker<base::IndexSequence<0,1,2>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(base::TimeTicks,bool)>,void __cdecl(scheduler::TaskQueueManager *,base::TimeTicks,bool),base::WeakPtr<scheduler::TaskQueueManager>,base::TimeTicks,bool>,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<scheduler::TaskQueueManager> >,base::internal::UnwrapTraits<base::TimeTicks>,base::internal::UnwrapTraits<bool> >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall scheduler::TaskQueueManager::*)(base::TimeTicks,bool)>,base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager> const &,base::TimeTicks const &,bool const &> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base) Line 350   C++
    libcef.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, const base::PendingTask & pending_task) Line 51   C++
    libcef.dll!base::MessageLoop::RunTask(const base::PendingTask & pending_task) Line 482   C++
    libcef.dll!base::MessageLoop::DoWork() Line 602   C++
    libcef.dll!base::MessagePumpDefault::Run(base::MessagePump::Delegate * delegate) Line 34   C++
    libcef.dll!base::MessageLoop::RunHandler() Line 445   C++
    libcef.dll!base::RunLoop::Run() Line 57   C++
    libcef.dll!base::MessageLoop::Run() Line 288   C++
    libcef.dll!content::RendererMain(const content::MainFunctionParams & parameters) Line 234   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 382   C++
    libcef.dll!content::ContentMainRunnerImpl::Run() Line 787   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 118   C++
    libcef.dll!cef_execute_process(const _cef_main_args_t * args, _cef_app_t * application, void * windows_sandbox_info) Line 144   C++
    GalaxyClient Helper.exe!CefExecuteProcess(const CefMainArgs & args, CefRefPtr<CefApp> application, void * windows_sandbox_info) Line 143   C++
    GalaxyClient Helper.exe!startCefRenderer(CefMainArgs & main_args) Line 41   C++
    GalaxyClient Helper.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) Line 50   C++
    GalaxyClient Helper.exe!__scrt_common_main_seh() Line 255   C++
    kernel32.dll!@BaseThreadInitThunk@12()   Unknown
    ntdll.dll!__RtlUserThreadStart()   Unknown
    ntdll.dll!__RtlUserThreadStart@8()   Unknown


After looking at the disassembly of the locations on the stack, we can see that the allocated size is ~5MB, while the memory used by the process is around 150 MB. No way is this a "real" out of memory error. We are running our 32 bit application on a 64bit Windows 8.1 machine. We are not compiling CEF manually.

Any ideas ?

Liosan
Last edited by Liosan on Wed Jul 20, 2016 9:36 am, edited 1 time in total.
Liosan
Techie
 
Posts: 14
Joined: Tue Apr 22, 2014 3:49 am

Re: Renderer process crash with OnNoMemory

Postby magreenblatt » Wed Jul 20, 2016 9:35 am

Does the crash reproduce with cefclient?
magreenblatt
Site Admin
 
Posts: 12409
Joined: Fri May 29, 2009 6:57 pm

Re: Renderer process crash with OnNoMemory

Postby Liosan » Wed Jul 20, 2016 9:44 am

Not really, but I don't feel it's comparable. The cefclient is a simple, barebones application which doesn't have any actual integration with embedded content. Our app is more complex, and it's hard to have this kind of behaviour in the demo app.

Liosan
Liosan
Techie
 
Posts: 14
Joined: Tue Apr 22, 2014 3:49 am

Re: Renderer process crash with OnNoMemory

Postby Liosan » Thu Jul 21, 2016 1:34 am

Oh dear, I think I got a bit confused - I mistook the cefsimple sources for the cefclient ones. Well, cefclient is not so barebones like I thought :) But still - the crash doesn't reproduce.

Liosan
Liosan
Techie
 
Posts: 14
Joined: Tue Apr 22, 2014 3:49 am


Return to Support Forum

Who is online

Users browsing this forum: Majestic-12 [Bot] and 17 guests