New issue
Advanced search Search tips

Issue 791403 link

Starred by 3 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug-Regression



Sign in to add a comment

OOM on windows

Project Member Reported by yoichio@chromium.org, Dec 4 2017

Issue description

Cr-Commit-Position: refs/heads/master@{#521248}


 	KernelBase.dll!76e6aa12()	Unknown	Non-user code. Cannot find or open the PDB file.
 	[Frames below may be incorrect and/or missing, no symbols loaded for KernelBase.dll]		Annotated Frame
>	base.dll!base::`anonymous namespace'::OnNoMemory(unsigned int size) Line 44	C++	Symbols loaded.
 	[External Code]		Annotated Frame
 	libGLESv2.dll!std::_Allocate(unsigned int _Count, unsigned int _Sz, bool _Try_aligned_allocation) Line 78	C++	Symbols loaded.
 	libGLESv2.dll!std::allocator<unsigned int>::allocate(const unsigned int _Count) Line 946	C++	Symbols loaded.
 	libGLESv2.dll!std::vector<unsigned int,std::allocator<unsigned int> >::_Buy(const unsigned int _Newcapacity) Line 1978	C++	Symbols loaded.
 	libGLESv2.dll!std::vector<unsigned int,std::allocator<unsigned int> >::vector<unsigned int,std::allocator<unsigned int> >(const std::vector<unsigned int,std::allocator<unsigned int> > & _Right) Line 769	C++	Symbols loaded.
 	libGLESv2.dll!gl::ImageBinding::ImageBinding(const gl::ImageBinding & __that) Line 460	C++	Symbols loaded.
 	libGLESv2.dll!std::_Default_allocator_traits<std::allocator<gl::ImageBinding> >::construct<gl::ImageBinding,gl::ImageBinding &>(std::allocator<gl::ImageBinding> & __formal, gl::ImageBinding * const _Ptr, gl::ImageBinding & <_Args_0>) Line 857	C++	Symbols loaded.
 	libGLESv2.dll!std::vector<gl::ImageBinding,std::allocator<gl::ImageBinding> >::emplace_back<gl::ImageBinding &>(gl::ImageBinding & <_Val_0>) Line 958	C++	Symbols loaded.
 	libGLESv2.dll!gl::MemoryProgramCache::Deserialize(const gl::Context * context, const gl::Program * program, gl::ProgramState * state, const unsigned char * binary, unsigned int length, gl::InfoLog & infoLog) Line 409	C++	Symbols loaded.
 	libGLESv2.dll!gl::Program::loadBinary(const gl::Context * context, unsigned int binaryFormat, const void * binary, int length) Line 1047	C++	Symbols loaded.
 	libGLESv2.dll!gl::Context::programBinary(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 4853	C++	Symbols loaded.
 	libGLESv2.dll!gl::ProgramBinary(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 1943	C++	Symbols loaded.
 	libGLESv2.dll!glProgramBinary(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 1468	C++	Symbols loaded.
 	gl_wrapper.dll!gl::GLApiBase::glProgramBinaryFn(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 4029	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::MemoryProgramCache::LoadLinkedProgram(unsigned int program, gpu::gles2::Shader * shader_a, gpu::gles2::Shader * shader_b, const std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,int> > > * bind_attrib_location_map, const std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > & transform_feedback_varyings, unsigned int transform_feedback_buffer_mode, gpu::gles2::GLES2DecoderClient * client) Line 359	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::Program::Link(gpu::gles2::ShaderManager * manager, gpu::gles2::Program::VaryingsPackingOption varyings_packing_option, gpu::gles2::GLES2DecoderClient * client) Line 1335	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::DoLinkProgram(unsigned int program_id) Line 8970	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::HandleLinkProgram(unsigned int immediate_data_size, const volatile void * cmd_data) Line 2396	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<0>(unsigned int num_commands, const volatile void * buffer, int num_entries, int * entries_processed) Line 5443	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::DoCommands(unsigned int num_commands, const volatile void * buffer, int num_entries, int * entries_processed) Line 5497	C++	Symbols loaded.
 	gpu.dll!gpu::CommandBufferService::Flush(int put_offset, gpu::AsyncAPIInterface * handler) Line 90	C++	Symbols loaded.
 	gpu.dll!gpu::GpuCommandBufferStub::OnAsyncFlush(int put_offset, unsigned int flush_id, bool snapshot_requested) Line 990	C++	Symbols loaded.
 	gpu.dll!base::DispatchToMethodImpl<gpu::GpuCommandBufferStub *,void (__thiscall gpu::GpuCommandBufferStub::*)(int,unsigned int,bool),std::tuple<int,unsigned int,bool>,0,1,2>(gpu::GpuCommandBufferStub * const & obj, void(gpu::GpuCommandBufferStub::*)(int, unsigned int, bool) method, std::tuple<int,unsigned int,bool> && args, std::integer_sequence<unsigned int,0,1,2> __formal) Line 53	C++	Symbols loaded.
 	gpu.dll!base::DispatchToMethod<gpu::GpuCommandBufferStub *,void (__thiscall gpu::GpuCommandBufferStub::*)(int,unsigned int,bool),std::tuple<int,unsigned int,bool> >(gpu::GpuCommandBufferStub * const & obj, void(gpu::GpuCommandBufferStub::*)(int, unsigned int, bool) method, std::tuple<int,unsigned int,bool> && args) Line 60	C++	Symbols loaded.
 	gpu.dll!IPC::DispatchToMethod<gpu::GpuCommandBufferStub,void (__thiscall gpu::GpuCommandBufferStub::*)(int,unsigned int,bool),void,std::tuple<int,unsigned int,bool> >(gpu::GpuCommandBufferStub * obj, void(gpu::GpuCommandBufferStub::*)(int, unsigned int, bool) method, void * __formal, std::tuple<int,unsigned int,bool> && tuple) Line 51	C++	Symbols loaded.
 	gpu.dll!IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void>::Dispatch<gpu::GpuCommandBufferStub,gpu::GpuCommandBufferStub,void,void (__thiscall gpu::GpuCommandBufferStub::*)(int,unsigned int,bool)>(const IPC::Message * msg, gpu::GpuCommandBufferStub * obj, gpu::GpuCommandBufferStub * sender, void * parameter, void(gpu::GpuCommandBufferStub::*)(int, unsigned int, bool) func) Line 146	C++	Symbols loaded.
 	gpu.dll!gpu::GpuCommandBufferStub::OnMessageReceived(const IPC::Message & message) Line 289	C++	Symbols loaded.
 	ipc.dll!IPC::MessageRouter::RouteMessage(const IPC::Message & msg) Line 57	C++	Symbols loaded.
 	gpu.dll!gpu::GpuChannel::HandleMessageHelper(const IPC::Message & msg) Line 520	C++	Symbols loaded.
 	gpu.dll!gpu::GpuChannel::HandleMessage(const IPC::Message & msg) Line 499	C++	Symbols loaded.
 	gpu.dll!base::internal::FunctorTraits<void (__thiscall gpu::GpuChannel::*)(IPC::Message const &),void>::Invoke<base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> >(void(gpu::GpuChannel::*)(const IPC::Message &) method, base::WeakPtr<gpu::GpuChannel> && receiver_ptr, IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> && <args_0>) Line 212	C++	Symbols loaded.
 	gpu.dll!base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall gpu::GpuChannel::*)(IPC::Message const &),base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> >(void(gpu::GpuChannel::*)(const IPC::Message &) && functor, base::WeakPtr<gpu::GpuChannel> && weak_ptr, IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> && <args_0>) Line 314	C++	Symbols loaded.
 	gpu.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall gpu::GpuChannel::*)(IPC::Message const &),base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> >,void __cdecl(void)>::RunImpl<void (__thiscall gpu::GpuChannel::*)(IPC::Message const &),std::tuple<base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> >,0,1>(void(gpu::GpuChannel::*)(const IPC::Message &) && functor, std::tuple<base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> > && bound, std::integer_sequence<unsigned int,0,1> __formal) Line 368	C++	Symbols loaded.
 	gpu.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall gpu::GpuChannel::*)(IPC::Message const &),base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void> >,void __cdecl(void)>::RunOnce(base::internal::BindStateBase * base) Line 336	C++	Symbols loaded.
 	gpu.dll!base::OnceCallback<void __cdecl(void)>::Run() Line 65	C++	Symbols loaded.
 	gpu.dll!gpu::Scheduler::RunNextTask() Line 527	C++	Symbols loaded.
 	gpu.dll!base::internal::FunctorTraits<void (__thiscall gpu::Scheduler::*)(void),void>::Invoke<base::WeakPtr<gpu::Scheduler> const &>(void(gpu::Scheduler::*)() method, const base::WeakPtr<gpu::Scheduler> & receiver_ptr) Line 212	C++	Symbols loaded.
 	gpu.dll!base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall gpu::Scheduler::*const &)(void),base::WeakPtr<gpu::Scheduler> const &>(void(gpu::Scheduler::*)() & functor, const base::WeakPtr<gpu::Scheduler> & weak_ptr) Line 314	C++	Symbols loaded.
 	gpu.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall gpu::Scheduler::*)(void),base::WeakPtr<gpu::Scheduler> >,void __cdecl(void)>::RunImpl<void (__thiscall gpu::Scheduler::*const &)(void),std::tuple<base::WeakPtr<gpu::Scheduler> > const &,0>(void(gpu::Scheduler::*)() & functor, const std::tuple<base::WeakPtr<gpu::Scheduler> > & bound, std::integer_sequence<unsigned int,0> __formal) Line 368	C++	Symbols loaded.
 	gpu.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall gpu::Scheduler::*)(void),base::WeakPtr<gpu::Scheduler> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base) Line 350	C++	Symbols loaded.
 	base.dll!base::OnceCallback<void __cdecl(void)>::Run() Line 65	C++	Symbols loaded.
 	base.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, base::PendingTask * pending_task) Line 56	C++	Symbols loaded.
 	base.dll!base::internal::IncomingTaskQueue::RunTask(base::PendingTask * pending_task) Line 129	C++	Symbols loaded.
 	base.dll!base::MessageLoop::RunTask(base::PendingTask * pending_task) Line 392	C++	Symbols loaded.
 	base.dll!base::MessageLoop::DeferOrRunPendingTask(base::PendingTask pending_task) Line 406	C++	Symbols loaded.
 	base.dll!base::MessageLoop::DoWork() Line 447	C++	Symbols loaded.
 	base.dll!base::MessagePumpForUI::DoRunLoop() Line 173	C++	Symbols loaded.
 	base.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 58	C++	Symbols loaded.
 	base.dll!base::MessageLoop::Run(bool application_tasks_allowed) Line 344	C++	Symbols loaded.
 	base.dll!base::RunLoop::Run() Line 133	C++	Symbols loaded.
 	base.dll!base::Thread::Run(base::RunLoop * run_loop) Line 256	C++	Symbols loaded.
 	base.dll!base::Thread::ThreadMain() Line 341	C++	Symbols loaded.
 	base.dll!base::`anonymous namespace'::ThreadFunc(void * params) Line 91	C++	Symbols loaded.
 	[External Code]		Annotated Frame

 
Content_shell.exe show up with completely white image.
I'm wondering why trybot including image layout tests is passing.

Comment 2 by yosin@chromium.org, Dec 4 2017

It attempt to allocate huge size of memory:
_Count = 278,335,548
_Sz = 4
Cr-Commit-Position: refs/heads/master@{#520886} (1st Dec) works.

Comment 4 Deleted

Comment 5 by kojii@chromium.org, Dec 5 2017

Reproduces for me too, after gclient sync today. For me, _Count = 4294967295.

Comment 6 by kojii@chromium.org, Dec 5 2017

"--use-angle=gl" seems to be a workaround.
Cc: jmad...@chromium.org brandon1...@intel.com
Components: -Internals>GPU Internals>GPU>ANGLE
Labels: -Type-Bug Needs-Feedback Type-Bug-Regression
Sounds like an ANGLE issue.

Can you please provide more details on how you reproduced the bug?

It seems like the regression range is:
https://crrev.com/520886..521248

The ANGLE range is:
https://chromium.googlesource.com/angle/angle.git/+log/54a29ffd8..d5f44c986

I don't know what the likely culprits in this range are, maybe
https://chromium.googlesource.com/angle/angle.git/+/76746f9bc29d23a00a56eaa5941209976e3301bc
or
https://chromium.googlesource.com/angle/angle.git/+/3c1da04e0becfdd2cd37fe3db9bb435b6f8f3491
The ImageBinding stuff is ES3. But it could be a problem of the cache serialization and deserialization being broken somewhere else, and making the read values corrupt. Kai's request for repro steps is very important - need more info on how to repro this, as it doesn't seem to show in the compiled Chrome that the GPU bots use.
Sorry ES 3.1.

Comment 10 by kojii@chromium.org, Dec 11 2017

> Can you please provide more details on how you reproduced the bug?

Don't know much about GPU but just launching content shell hits this failure.

* --use-angle=gl is fine.
* --disable-gpu-rasterization is fine too.
* HP z620 + AMD Radeon HD7700 and another HP z620 (don't know its GPU right now, can check later.)

What else can I investigate for you to help?

Comment 11 by kojii@chromium.org, Dec 11 2017

I removed the "--disable-gpu-rasterization" flag and this no longer reproduces. Our team mate was seeing "--disable-gpu-rasterization" makes startup of content shell much faster, but I don't observe that either today.

I'll check another machine later.

Comment 12 by kojii@chromium.org, Dec 11 2017

* Not reproducible on HPz620 + NVIDIA Quadro K2000 either.

Comment 13 by kojii@chromium.org, Dec 21 2017

Labels: -Needs-Feedback
Starts happening again.

Comment 14 by kojii@chromium.org, Dec 21 2017

This time the stack is slightly different:
	base.dll!base::`anonymous namespace'::OnNoMemory(unsigned int size) Line 44	C++	Symbols loaded.
 	[External Code]		Annotated Frame
 	libGLESv2.dll!rx::ProgramD3D::load(const gl::Context * context, gl::InfoLog & infoLog, gl::BinaryInputStream * stream) Line 989	C++	Symbols loaded.
 	libGLESv2.dll!gl::MemoryProgramCache::Deserialize(const gl::Context * context, const gl::Program * program, gl::ProgramState * state, const unsigned char * binary, unsigned int length, gl::InfoLog & infoLog) Line 418	C++	Symbols loaded.
 	libGLESv2.dll!gl::Program::loadBinary(const gl::Context * context, unsigned int binaryFormat, const void * binary, int length) Line 1072	C++	Symbols loaded.
 	libGLESv2.dll!gl::Context::programBinary(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 4896	C++	Symbols loaded.
 	libGLESv2.dll!gl::ProgramBinary(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 1943	C++	Symbols loaded.
 	libGLESv2.dll!glProgramBinary(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 1468	C++	Symbols loaded.
 	gl_wrapper.dll!gl::GLApiBase::glProgramBinaryFn(unsigned int program, unsigned int binaryFormat, const void * binary, int length) Line 4029	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::MemoryProgramCache::LoadLinkedProgram(unsigned int program, gpu::gles2::Shader * shader_a, gpu::gles2::Shader * shader_b, const std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,int> > > * bind_attrib_location_map, const std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > & transform_feedback_varyings, unsigned int transform_feedback_buffer_mode, gpu::gles2::GLES2DecoderClient * client) Line 359	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::Program::Link(gpu::gles2::ShaderManager * manager, gpu::gles2::Program::VaryingsPackingOption varyings_packing_option, gpu::gles2::GLES2DecoderClient * client) Line 1335	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::DoLinkProgram(unsigned int program_id) Line 9054	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::HandleLinkProgram(unsigned int immediate_data_size, const volatile void * cmd_data) Line 2396	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<0>(unsigned int num_commands, const volatile void * buffer, int num_entries, int * entries_processed) Line 5525	C++	Symbols loaded.
 	gpu.dll!gpu::gles2::GLES2DecoderImpl::DoCommands(unsigned int num_commands, const volatile void * buffer, int num_entries, int * entries_processed) Line 5579	C++	Symbols loaded.
 	gpu.dll!gpu::CommandBufferService::Flush(int put_offset, gpu::AsyncAPIInterface * handler) Line 90	C++	Symbols loaded.
 	gpu.dll!gpu::CommandBufferStub::OnAsyncFlush(int put_offset, unsigned int flush_id, bool snapshot_requested) Line 647	C++	Symbols loaded.

Let me know if there's a way you think we could repro this.
Owner: geoffl...@chromium.org
Status: Assigned (was: Untriaged)
"content_shell --single-process" also causes OOM.
"content_shell --single-process --use-angle=gl" is work around.

Comment 18 by kojii@chromium.org, Feb 20 2018

Started happening again to me too.
Cc: zmo@chromium.org
jmadill@, goefflang@, did you have a chance to try the repro from #17.

yoichio@, have you seen this recently?

+zmo@ as this is Windows specific.

Additionally, it sounds like this is content shell only, in which case let's drop priority.
Haven't yet had a chance to try it. I'm fine with dropping to Pri-2.
Yes, same as #17.
I had tried it and couldn't repro.  My guess is that some cached program is corrupted, possibly based on the config of the particular computer.  Is there a flag to disable program caching that would work with content_shell?

Could someone that can still repro post their about:gpu?
You can run with --disable-gpu-program-cache and see if you can get rid of this OOM

Sign in to add a comment