New issue
Advanced search Search tips

Issue 717271 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: May 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug
Proj-XR
Proj-XR-VR



Sign in to add a comment

Debug check hit in ui::ViewAndroid::AddChild occasionally when exiting VR.

Project Member Reported by mthiesse@chromium.org, May 1 2017

Issue description

The debug check was added in https://codereview.chromium.org/2708613002

Stack trace is:
[FATAL:view_android.cc(118)] Check failed: !SubtreeHasEventForwarder(child) || !ViewTreeHasEventForwarder(this). Only one event handler is allowed.

ui::ViewAndroid::AddChild(ui::ViewAndroid*) view_android.cc:118
content::ContentViewCoreImpl::UpdateWindowAndroid(_JNIEnv*, base::android::JavaParamRef<_jobject*> const&, long long) content_view_core_impl.cc:285
Java_org_chromium_content_browser_ContentViewCore_nativeUpdateWindowAndroid ContentViewCore_jni.h:77

When entering VR we call CVC#updateWindowAndroid with our VR WindowAndroid. This never crashes. When exiting VR we call CVC#updateWindowAndroid with the original WindowAndroid, restoring it to its initial state. This occasionally crashes.
 
Owner: jinsuk...@chromium.org
Status: Assigned (was: Available)
+jinsukkim, our behaviour here hasn't changed for months. I don't really understand what the DCHECK is checking, and I don't understand how we could be triggering it as we're only adding back a view that we removed.

Any idea what might be causing this?

See VrShellImpl#initializeTabForVR and VrShellImpl#restoreTabFromVR for the code that's causing this.
Let me take a deeper look once I get back from OOO, but it looks like the WindowAndroid and the original view tree both have an event forwarder by the time they are linked again via VrShellImpl#restoreTabFromVR. Is there a step for repro or a user scenario that goes through those calls (init/restore)?
Entering and exiting VR mode will trigger this occasionally. I haven't found a reliable repro case, but if you enter and exit VR a bunch, and restart chrome a bunch, you can get a repro within a few tries.

You can use https://webvr.info/samples/03-vr-presentation.html to enter and exit VR. Just hit the Enter VR button. You don't even need a VR headset, VR services will assume you have a cardboard headset and it should just work, but let me know if you run into problems.
Status: Started (was: Assigned)
Project Member

Comment 5 by bugdroid1@chromium.org, May 11 2017

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

commit 1a116ecfdf829702b653ded84a0e1cdb8bdfd7d6
Author: jinsukkim <jinsukkim@chromium.org>
Date: Thu May 11 05:04:35 2017

Refined DCHECK preventing multiple event forwarders in VA tree path

A ViewAndroid tree path from the top to a leaf node can have only
a single EventForwarder instance. Rewrote helper methods used for
DCHECK that enforces the requirement to match the actual job with
the intention.

BUG= 717271 

Review-Url: https://codereview.chromium.org/2861413002
Cr-Commit-Position: refs/heads/master@{#470814}

[modify] https://crrev.com/1a116ecfdf829702b653ded84a0e1cdb8bdfd7d6/ui/android/view_android.cc
[modify] https://crrev.com/1a116ecfdf829702b653ded84a0e1cdb8bdfd7d6/ui/android/view_android.h
[modify] https://crrev.com/1a116ecfdf829702b653ded84a0e1cdb8bdfd7d6/ui/android/view_android_unittests.cc

Status: Fixed (was: Started)
Project Member

Comment 7 by bugdroid1@chromium.org, May 11 2017

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

commit 38ac4c9a36f237bcddf1ae1e723a7ee00c841f64
Author: sebsg <sebsg@chromium.org>
Date: Thu May 11 13:20:46 2017

Revert of Refined DCHECK preventing multiple event forwarders in VA tree path (patchset #9 id:200001 of https://codereview.chromium.org/2861413002/ )

Reason for revert:
Primary suspect making ViewAndroidTest.ChecksMultipleEventForwarders fails consistently

https://uberchromegw.corp.google.com/i/chromium.linux/builders/Android%20Tests

Original issue's description:
> Refined DCHECK preventing multiple event forwarders in VA tree path
>
> A ViewAndroid tree path from the top to a leaf node can have only
> a single EventForwarder instance. Rewrote helper methods used for
> DCHECK that enforces the requirement to match the actual job with
> the intention.
>
> BUG= 717271 
>
> Review-Url: https://codereview.chromium.org/2861413002
> Cr-Commit-Position: refs/heads/master@{#470814}
> Committed: https://chromium.googlesource.com/chromium/src/+/1a116ecfdf829702b653ded84a0e1cdb8bdfd7d6

TBR=boliu@chromium.org,jinsukkim@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 717271 

Review-Url: https://codereview.chromium.org/2880583002
Cr-Commit-Position: refs/heads/master@{#470938}

[modify] https://crrev.com/38ac4c9a36f237bcddf1ae1e723a7ee00c841f64/ui/android/view_android.cc
[modify] https://crrev.com/38ac4c9a36f237bcddf1ae1e723a7ee00c841f64/ui/android/view_android.h
[modify] https://crrev.com/38ac4c9a36f237bcddf1ae1e723a7ee00c841f64/ui/android/view_android_unittests.cc

Project Member

Comment 8 by bugdroid1@chromium.org, May 12 2017

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

commit e982114658f12e1dd021e74580ef7ccd73c44a85
Author: jinsukkim <jinsukkim@chromium.org>
Date: Fri May 12 09:57:04 2017

Reland "Refined DCHECK preventing multiple event forwarders in VA tree path"

Previous CL: https://crrev.com/2861413002

The new test in the CL depends on the presence of DCHECK macro
but some buildbots failed since they don't have DCHECK enabled
(Trybot passed because they have deliberately DCHECK on).

Added #if DCHECK_IS_ON() to handle that, and also used a simpler
macro EXPECT_DCHECK_DEATH over DCHECK_DEATH.

> A ViewAndroid tree path from the top to a leaf node can have only
> a single EventForwarder instance. Rewrote helper methods used for
> DCHECK that enforces the requirement to match the actual job with
> the intention.

BUG= 717271 

Review-Url: https://codereview.chromium.org/2861413002
Cr-Commit-Position: refs/heads/master@{#470814}
Committed: https://chromium.googlesource.com/chromium/src/+/1a116ecfdf829702b653ded84a0e1cdb8bdfd7d6

patch from issue 2861413002 at patchset 200001 (http://crrev.com/2861413002#ps200001)

Review-Url: https://codereview.chromium.org/2879713002
Cr-Commit-Position: refs/heads/master@{#471262}

[modify] https://crrev.com/e982114658f12e1dd021e74580ef7ccd73c44a85/ui/android/view_android.cc
[modify] https://crrev.com/e982114658f12e1dd021e74580ef7ccd73c44a85/ui/android/view_android.h
[modify] https://crrev.com/e982114658f12e1dd021e74580ef7ccd73c44a85/ui/android/view_android_unittests.cc

Components: UI>Browser>VR

Sign in to add a comment