New issue
Advanced search Search tips

Issue 833620 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug-Regression
Proj-XR



Sign in to add a comment

SharedBuffer-related WebXR renderer crash

Project Member Reported by bsheedy@chromium.org, Apr 16 2018

Issue description

About 20% of the time on O, we get a renderer crash when either entering or exiting WebXR presentation (unsure which). This is due to a segfault in XRWebGLDrawingBuffer::UseSharedBuffer.

Stack trace:
signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 16539 (Chrome_InProcRe), pid 16465 (chromium.chrome)
pid: 16465, tid: 16539, name: Chrome_InProcRe  >>> org.chromium.chrome <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
     r0 00000000  r1 00000000  r2 cc21194d  r3 cc6fc6b8
     r4 c82d1eb0  r5 5f7f4470  r6 c27a2900  r7 ce1fb2d5
     r8 c82d1ed0  r9 cfd25178  sl c933dd00  fp 00000001
     ip 00000000  sp c88fedf0  lr cde33ce3  pc cde33ce4

Stack Trace:
  RELADDR   FUNCTION                                                                                                                                                                               FILE:LINE
  022f0ce4  blink::XRWebGLDrawingBuffer::UseSharedBuffer(gpu::MailboxHolder const&)                                                                                                                ../../third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc:253:11
  040a47cd  blink::XRWebGLLayer::OnFrameStart(base::Optional<gpu::MailboxHolder> const&)                                                                                                           ../../third_party/blink/renderer/modules/xr/xr_webgl_layer.cc:255:22
  040a214d  blink::XRSession::OnFrame(std::__ndk1::unique_ptr<blink::TransformationMatrix, std::__ndk1::default_delete<blink::TransformationMatrix> >, base::Optional<gpu::MailboxHolder> const&)  ../../third_party/blink/renderer/modules/xr/xr_session.cc:331:23
  0409fe43  blink::XRFrameProvider::ProcessScheduledFrame(double)                                                                                                                                  ../../third_party/blink/renderer/modules/xr/xr_frame_provider.cc:313:25
  0239ad99  base::OnceCallback<void ()>::Run() &&                                                                                                                                                  ../../base/callback.h:95:12
  v------>  WTF::ThreadCheckingCallbackWrapper<base::OnceCallback<void ()>, void ()>::RunInternal(base::OnceCallback<void ()>*)                                                                    ../../third_party/blink/renderer/platform/wtf/functional.h:258:33
  02283935  WTF::ThreadCheckingCallbackWrapper<base::OnceCallback<void ()>, void ()>::Run()                                                                                                        ../../third_party/blink/renderer/platform/wtf/functional.h:245:0
  0239ad99  base::OnceCallback<void ()>::Run() &&                                                                                                                                                  ../../base/callback.h:95:12
  0237d799  base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*)                                                                                                                   ../../base/debug/task_annotator.cc:101:33
  02801ffd  blink::scheduler::internal::ThreadControllerImpl::DoWork(blink::scheduler::internal::SequencedTaskSource::WorkType)                                                                    ../../third_party/blink/renderer/platform/scheduler/base/thread_controller_impl.cc:162:21
  0239ad99  base::OnceCallback<void ()>::Run() &&                                                                                                                                                  ../../base/callback.h:95:12
  0237d799  base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*)                                                                                                                   ../../base/debug/task_annotator.cc:101:33
  0237d707  base::internal::IncomingTaskQueue::RunTask(base::PendingTask*)                                                                                                                         ../../base/message_loop/incoming_task_queue.cc:124:19
  0237d5c7  base::MessageLoop::RunTask(base::PendingTask*)                                                                                                                                         ../../base/message_loop/message_loop.cc:319:25
  00e422ff  base::MessageLoop::DeferOrRunPendingTask(base::PendingTask)                                                                                                                            ../../base/message_loop/message_loop.cc:329:5
  0237a9bd  base::MessageLoop::DoDelayedWork(base::TimeTicks*)                                                                                                                                     ../../base/message_loop/message_loop.cc:413:10
  023ca0f9  base::MessagePumpDefault::Run(base::MessagePump::Delegate*)                                                                                                                            ../../base/message_loop/message_pump_default.cc:41:27
  0237a24b  base::MessageLoop::Run(bool)                                                                                                                                                           ../../base/message_loop/message_loop.cc:271:12
  0237a1b7  base::RunLoop::Run()                                                                                                                                                                   ../../base/run_loop.cc:130:14
  0237a113  base::Thread::Run(base::RunLoop*)                                                                                                                                                      ../../base/threading/thread.cc:255:13
  02378007  base::Thread::ThreadMain()                                                                                                                                                             ../../base/threading/thread.cc:337:3
  02377993  base::(anonymous namespace)::ThreadFunc(void*)                                                                                                                                         ../../base/threading/platform_thread_posix.cc:76:13
  000478d7  <UNKNOWN>                                                                                                                                                                              /system/lib/libc.so
  0001b341  <UNKNOWN>                                                                                                                                                                              /system/lib/libc.so
 
Project Member

Comment 1 by bugdroid1@chromium.org, Apr 17 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4659801780081d2aebc63e3d5278cee675e9f9e6

commit 4659801780081d2aebc63e3d5278cee675e9f9e6
Author: bsheedy <bsheedy@chromium.org>
Date: Tue Apr 17 16:44:52 2018

Fix WebXR renderer crash

Adds early returns to XRWebGLDrawingBuffer if the drawing buffer client
is null. This fixes a segfault that was causing a renderer crash when
exiting (or entering?) WebXR presentation.

Bug:  833620 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Iaf03bff95f542da63e871b1abf8a96e1b0b29d7f
Reviewed-on: https://chromium-review.googlesource.com/1014480
Reviewed-by: Ian Vollick <vollick@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#551361}
[modify] https://crrev.com/4659801780081d2aebc63e3d5278cee675e9f9e6/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc

Status: Fixed (was: Assigned)
Labels: M-68 Test-Complete
Components: Internals>XR
Labels: -VR-Caught-By-Test XR-Caught-By-Test

Sign in to add a comment