-
Bug
-
Resolution: Cannot Reproduce
-
P1: Critical
-
None
-
5.14.2
-
None
When visiting https://unity.com/ on Wayland, there's a segfault in Chrome_InProcGp:
#0 0x0000000000000000 in () #1 0x00007fffe761e2bb in gpu::gles2::GLES2DecoderImpl::DoFramebufferParameteri(unsigned int, unsigned int, int) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/command_buffer/service/gles2_cmd_decoder.cc:8258 #2 0x00007fffe761e42d in gpu::gles2::GLES2DecoderImpl::HandleFramebufferParameteri(unsigned int, void const volatile*) () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h:4711 #3 gpu::gles2::GLES2DecoderImpl::HandleFramebufferParameteri(unsigned int, void const volatile*) () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h:4689 #4 0x00007fffe764d5a2 in gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<false>(unsigned int, void const volatile*, int, int*) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/command_buffer/service/gles2_cmd_decoder.cc:5918 #5 0x00007fffe75185b9 in gpu::CommandBufferService::Flush(int, gpu::AsyncAPIInterface*) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/command_buffer/service/command_buffer_service.cc:69 #6 0x00007fffe779044d in gpu::CommandBufferStub::OnAsyncFlush(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/ipc/service/command_buffer_stub.cc:518 #7 0x00007fffe7799850 in base::DispatchToMethodImpl<gpu::CommandBufferStub*, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&), std::tuple<int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > >, 0ul, 1ul, 2ul>(gpu::CommandBufferStub* const&, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&), std::tuple<int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > >&&, std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/tuple.h:52 #8 base::DispatchToMethod<gpu::CommandBufferStub*, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&), std::tuple<int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > > >(gpu::CommandBufferStub* const&, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&), std::tuple<int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > >&&) () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/tuple.h:60 #9 IPC::DispatchToMethod<gpu::CommandBufferStub, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&), void, std::tuple<int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > > >(gpu::CommandBufferStub*, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&), void*, std::tuple<int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > >&&) () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/ipc/ipc_message_templates.h:51 #10 IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta, std::tuple<int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > >, void>::Dispatch<gpu::CommandBufferStub, gpu::CommandBufferStub, void, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&)>(IPC::Message const*, gpu::CommandBufferStub*, gpu::CommandBufferStub*, void*, void (gpu::CommandBufferStub::*)(int, unsigned int, std::vector<gpu::SyncToken, std::allocator<gpu::SyncToken> > const&)) () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/ipc/ipc_message_templates.h:146 #11 gpu::CommandBufferStub::OnMessageReceived(IPC::Message const&) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/ipc/service/command_buffer_stub.cc:167 #12 0x00007fffe9fbd1c3 in IPC::MessageRouter::RouteMessage(IPC::Message const&) () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/ipc/message_router.cc:56 #13 0x00007fffe779b2b7 in gpu::GpuChannel::HandleMessageHelper(IPC::Message const&) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/ipc/service/gpu_channel.cc:621 #14 0x00007fffe779b36b in gpu::GpuChannel::HandleMessage(IPC::Message const&) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/ipc/service/gpu_channel.cc:579 #15 0x00007fffe75201e7 in base::OnceCallback<void ()>::Run() && () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/callback.h:98 #16 gpu::Scheduler::RunNextTask() () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/gpu/command_buffer/service/scheduler.cc:524 #17 0x00007fffe695d4d4 in base::OnceCallback<void ()>::Run() && () at ../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/callback.h:98 #18 base::TaskAnnotator::RunTask(char const*, base::PendingTask*) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/task/common/task_annotator.cc:142 #19 0x00007fffe696f412 in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow*, bool*) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:365 #20 0x00007fffe696fb8c in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoSomeWork() () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:219 #21 0x00007fffe692a296 in base::MessagePumpDefault::Run(base::MessagePump::Delegate*) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/message_loop/message_pump_default.cc:39 #22 0x00007fffe696d75f in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool, base::TimeDelta) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:463 #23 0x00007fffe694c8d9 in base::RunLoop::RunWithTimeout(base::TimeDelta) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/run_loop.cc:157 #24 0x00007fffe698bf83 in base::Thread::Run(base::RunLoop*) () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/threading/thread.cc:242 #25 base::Thread::ThreadMain() () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/threading/thread.cc:312 #26 0x00007fffe69c154a in ThreadFunc() () at ./../../../../qtwebengine-everywhere-src-5.14.2/src/3rdparty/chromium/base/threading/platform_thread_posix.cc:81 #27 0x00007ffff79fb46f in start_thread () at /usr/lib/libpthread.so.0 #28 0x00007ffff7ed33d3 in clone () at /usr/lib/libc.so.6
I personally can't reproduce the issue, but multiple users of qutebrowser reproduced it and can reproduce it in Falkon (another QtWebEngine browser) as well.
Someone said it only happens on older IntelHD graphics, another reporter said they can only reproduce it on an older machine with an i3-2330M but not a more modern machine.
Apparently, turning off QWebEngineSettings::WebGLEnabled fixes the issue.
The offending line seems to be api()->glFramebufferParameteriFn(target, pname, param);, so I'm guessing possibly api() is a nullptr there?