New issue
Advanced search Search tips

Issue 820288 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 13
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug
Proj-XR
Proj-XR-VR



Sign in to add a comment

OpenVRGamepadDataFetcher::GetGamepadData is not threadsafe

Project Member Reported by billorr@chromium.org, Mar 8 2018

Issue description

see crash - 9c42041de234b7bc

GetGamepadData is called on a thread while the OpenVRDeviceProvider is shutting down on a separate thread, and shutting down OpenVR.


 
Components: Internals>XR
Crash ID doesn't exist, did you paste the wrong hash bill? Also P3 seems low for a crash bug if you found it in the wild.
Labels: -Pri-3 Pri-1
wasn't "in the wild" if I remember correctly, but did hit locally once when testing other things.

I have the oculus equivalent fix uploaded, and can start on this soon.  boosting priority.
Labels: VR-Desktop
Components: -Internals>XR Internals>XR>VR
Project Member

Comment 6 by bugdroid1@chromium.org, Jul 13

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

commit 405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9
Author: Bill Orr <billorr@chromium.org>
Date: Fri Jul 13 21:19:11 2018

Fix up OpenVR threading and session lifetimes

This is similar to a change made for Oculus devices.  OpenVR is
initialized when we have a magic window session, and can only be used on
the UI thread, or it can be initialized on the render-loop thread, and
we will only use it on that thread.

Gamepad data is now updated per-frame by the render loop, with data
passed over to the gamepad fetcher and read in its polling thread.

BUG= 820288 ,  793364 

Change-Id: I543487f823f7ac08e9b0f01889d227f455d0482c
Reviewed-on: https://chromium-review.googlesource.com/1136056
Commit-Queue: Bill Orr <billorr@chromium.org>
Reviewed-by: Klaus Weidner <klausw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575070}
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/BUILD.gn
[add] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_api_wrapper.cc
[add] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_api_wrapper.h
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_device.cc
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_device.h
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_device_provider.cc
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_device_provider.h
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_gamepad_data_fetcher.cc
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_gamepad_data_fetcher.h
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_render_loop.cc
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/openvr_render_loop.h
[modify] https://crrev.com/405f1053fe8a90e4ed859d430ea6ab2f8f1a2db9/device/vr/openvr/test/fake_openvr_impl_api.cc

Status: Fixed (was: Assigned)

Sign in to add a comment