New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 920401 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 10
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug-Regression
Proj-VR
Proj-XR
Proj-XR-VR



Sign in to add a comment

All VR tests failing due to navigation hanging

Project Member Reported by bsheedy@chromium.org, Jan 9

Issue description

It looks like all VR tests on Daydream-ready devices have started failing due to navigation failing on startup, e.g.

java.lang.AssertionError: Page did not load.  Tab information at time of failure -- expected url: 'null', actual URL: 'about:blank', load progress: 10, is loading: true, web contents init: true, web contents loading: true

Since this made it past the CQ, I assume that this is at least somewhat tied to either OS version or hardware, as otherwise the Cardboard VR tests on M should have caught this.
 
Labels: OS-Android
Owner: huayinz@chromium.org
Status: Assigned (was: Untriaged)
Bisect points to https://chromium-review.googlesource.com/c/chromium/src/+/1399457 as the culprit (??????). Reverting it.

This does appear to be an O-specific issue, as it's not occurring on the same devices with N.
Project Member

Comment 3 by bugdroid1@chromium.org, Jan 9

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

commit 338cc933e27c8c67e0df5193a1a885179f72ae75
Author: Brian Sheedy <bsheedy@chromium.org>
Date: Wed Jan 09 22:52:39 2019

Revert "[Dark] Add build flag and experiment flag"

This reverts commit 8ef8c364dc0648b4905c4f9cfdf053e4279a47fb.

Reason for revert: Cause of  crbug.com/920401 

Original change's description:
> [Dark] Add build flag and experiment flag
> 
> This patch adds a build flag and an experiment flag for the dark mode
> experiment. It will exclude the night- resources in the build for now.
> 
> Bug: 919684
> Change-Id: I16f7dc0b076268863f6ec537d4ee41af124366df
> Reviewed-on: https://chromium-review.googlesource.com/c/1399457
> Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org>
> Reviewed-by: Theresa <twellington@chromium.org>
> Commit-Queue: Becky Zhou <huayinz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#621172}

TBR=ellyjones@chromium.org,twellington@chromium.org,huayinz@chromium.org

Change-Id: I622fee8c24bf12771a8353d18970a5a77021999b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 919684,  920401 
Reviewed-on: https://chromium-review.googlesource.com/c/1403986
Reviewed-by: Brian Sheedy <bsheedy@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621349}
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/android/BUILD.gn
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/android/java/res/values-v17/styles.xml
[delete] https://crrev.com/1b878fc95604f9018ea8f16c56571d7033a05cd9/chrome/android/java/res_night/values-night/colors.xml
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/browser/about_flags.cc
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/browser/android/chrome_feature_list.cc
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/browser/android/chrome_feature_list.h
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/browser/flag-metadata.json
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/browser/flag_descriptions.cc
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/chrome/browser/flag_descriptions.h
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/tools/metrics/histograms/enums.xml
[modify] https://crrev.com/338cc933e27c8c67e0df5193a1a885179f72ae75/ui/android/BUILD.gn
[delete] https://crrev.com/1b878fc95604f9018ea8f16c56571d7033a05cd9/ui/android/features.gni
[delete] https://crrev.com/1b878fc95604f9018ea8f16c56571d7033a05cd9/ui/android/java/res_night/values-night/colors.xml

Cc: tiborg@chromium.org
Can we try another bisect? I would be really surprised if the reverted CL were actually to blame.

This CL, also on the first failure, seems more likely (at least vr related): "[ar/vr] Add module split name to manifests" https://chromium-review.googlesource.com/c/1400955
I think it is indeed related to my CL.

I see this log message:

java.lang.ExceptionInInitializerError
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.base.ContextUtils$Holder.access$100(ContextUtils.java:31)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.base.ContextUtils.getAppSharedPreferences(ContextUtils.java:87)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager.<init>(ChromePreferenceManager.java:265)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager.<init>(ChromePreferenceManager.java:21)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager$LazyHolder.<clinit>(ChromePreferenceManager.java:259)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager.getInstance(ChromePreferenceManager.java:273)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.chrome.browser.util.FeatureUtilities.isNightModeAvailable(FeatureUtilities.java:372)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.chrome.browser.ChromeApplication.initDefaultNightMode(ChromeApplication.java:227)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.chrome.browser.ChromeApplication.onCreate(ChromeApplication.java:65)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.app.ActivityThread.-wrap1(Unknown Source:0)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:105)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6541)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: Caused by: java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:389)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:370)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:167)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:526)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.base.ContextUtils.fetchAppSharedPreferences(ContextUtils.java:76)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.base.ContextUtils.access$000(ContextUtils.java:22)
  01-09 20:43:27.377 23313 23313 E AndroidRuntime: 	at org.chromium.base.ContextUtils$Holder.<clinit>(ContextUtils.java:33)

bsheedy@ - Is there any special settings on O VR tests that could cause this?
I double checked the bisection's results before reverting, and checked again just now by syncing to ToT with the revert in.

The logcat output from a failed test has:

01-09 19:19:06.331 18054 18054 E AndroidRuntime: FATAL EXCEPTION: main
01-09 19:19:06.331 18054 18054 E AndroidRuntime: Process: org.chromium.chrome:sandboxed_process0, PID: 18054
01-09 19:19:06.331 18054 18054 E AndroidRuntime: java.lang.ExceptionInInitializerError
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.base.ContextUtils$Holder.access$100(ContextUtils.java:31)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.base.ContextUtils.getAppSharedPreferences(ContextUtils.java:87)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager.<init>(ChromePreferenceManager.java:265)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager.<init>(ChromePreferenceManager.java:21)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager$LazyHolder.<clinit>(ChromePreferenceManager.java:259)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.chrome.browser.preferences.ChromePreferenceManager.getInstance(ChromePreferenceManager.java:273)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.chrome.browser.util.FeatureUtilities.isNightModeAvailable(FeatureUtilities.java:372)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.chrome.browser.ChromeApplication.initDefaultNightMode(ChromeApplication.java:227)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.chrome.browser.ChromeApplication.onCreate(ChromeApplication.java:65)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.app.ActivityThread.-wrap1(Unknown Source:0)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:105)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6541)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: Caused by: java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:389)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:370)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:167)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:526)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.base.ContextUtils.fetchAppSharedPreferences(ContextUtils.java:76)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.base.ContextUtils.access$000(ContextUtils.java:22)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	at org.chromium.base.ContextUtils$Holder.<clinit>(ContextUtils.java:33)
01-09 19:19:06.331 18054 18054 E AndroidRuntime: 	... 19 more

Which is caused by one of the files touched in the CL (ChromePreferenceManager.java).
Nothing is changed for the VR tests between N and O, and this also affected the AR tests, which are much closer to "normal" Chrome instrumentation tests.

My guess is that it's related to the OS version, although I'm not aware of any changes to shared preferences (which seem to be the root cause of the crash) in O off the top of my head.
I looked online and this seems to be related to that if the device is locked, we can't access shared preference because it is credential encrypted storage staring O

https://cs.corp.google.com/aosp-master/frameworks/base/core/java/android/app/ContextImpl.java?type=cs&q=%22SharedPreferences+in+credential+encrypted%22&g=0&l=437
AFAIK the ability to use the encrypted storage for shared preferences was added in N (https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/sdk/shared_prefs.py?q=sharedprefs&sq=package:chromium&dr=CSs&l=199), and this was reproing locally on a device that was unlocked and on the home screen.
I think the wording of my comment 8 is a little confusing. If you look at the link at comment 8, the exception will be thrown if it is O+, and is encrypted storage (N+) and if the user is not unlocked. bsheedy@, would you be able to check if the exception will still happen if the device is unlocked?
 huayinz@: I got a crash with the same stack trace when launching Chrome normally with an Android O device.
Hm.. okay, then that's definitely my fault. Will investigate...
I randomly tried moving initDefaultNightMode() to within the
if(isBrowserProcess) {} 
block in ChromeApplication and the crash went away. I am not sure if this is the right thing to do.
Interesting... Thanks for the investigation. I see the other access to ChromePreferenceManager is inside the isBrowserProcess block as well...
Yeah, a ChromeApplication instance is created for all of our processes (browser, renderer, gpu, ...).

The renderer process doesn't have file access and preferences require file access, so not surprising this is making it sad.
Oh.. Good to know. Thanks Ted and Peter!
Status: Fixed (was: Assigned)
Yes, definitely good to know. Thanks for the help investigating!

There's a reland in-flight associated with the original crbug, so I think we can close this out.

Sign in to add a comment