Issue metadata
Sign in to add a comment
|
VR Instrumentation tests hitting ring_buffer DCHECK |
||||||||||||||||||||||||||||
Issue descriptionMany VR tests are flakily hitting the DCHECK in ring_buffer.cc making sure that the available size is aligned (https://cs.chromium.org/chromium/src/gpu/command_buffer/client/ring_buffer.cc?q=ring_buffer.cc&sq=package:chromium&dr&l=151). This seems to be possible for any VR browser-related test, but appears most common in the VrShellNavigationTest#* ones.
,
Jul 3
,
Jul 3
I was only able to repro this on the Pixel XLs with N on swarming, not with my Pixel 2 with O locally. https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Nougat%20Phone%20Tester/6770 is a specific failed build, logcat output and such can be found under "result_details" (note that the WebVrInputTest#testFocusUpdatesSynchronously failures are unrelated). Sample logcat output: https://luci-logdog.appspot.com/v/?s=chromium%2Fandroid%2Fswarming%2Flogcats%2F3e791cc68e022111%2F%2B%2Flogcat_logcat_org.chromium.chrome.browser.vr_shell.VrShellNavigationTest.testWebVrFullscreenToWebVr_20180703T134217-UTC_HT73Y0201289 The provided stack trace is garbage when symbolized: https://luci-logdog.appspot.com/v/?s=chromium%2Fandroid%2Fswarming%2Flogcats%2F3e791cc68e022111%2F%2B%2Ftombstones_tombstones_20180703T134231-UTC_HT73Y0201289
,
Jul 4
How can I repro this myself? Is there a way to run it on swarming?
,
Jul 5
Yes, this repros on swarming. I can get you the exact command line I used if you need on Monday when I'm back in the office, but it should be doable using mb.py's swarming run with the following dimensions: pool Chrome device_type marlin device_os NMF26U The target you'll want to build is chrome_public_test_vr_apk. I used the same GN args as the bot, but it might repro with others: ffmpeg_branding = "Chrome" is_component_build = false is_debug = true proprietary_codecs = true strip_absolute_paths_from_debug_symbols = true symbol_level = 1 target_cpu = "arm64" target_os = "android" use_goma = true You'll also need to some special steps in order to install and setup an additional APK necessary for VR tests. Full instructions are available at https://cs.chromium.org/chromium/src/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/README.md?l=56, but the TL;DR is: * Set the DOWNLOAD_VR_TEST_APKS environment variable locally * Run 'gclient runhooks' * When triggering the test, pass in these two additional arguments: -replace-system-package com.google.vr.vrcore,//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk --shared-prefs-file //chrome/android/shared_preference_files/test/vr_ddview_skipdon_setupcomplete.json
,
Jul 6
,
Jul 7
Taking over from James while he's OOO.
,
Jul 9
Here's the exact command I used to trigger the tests on swarming and repro:
ninja -C out/nougatbot -j1000 -l70 chrome_public_test_vr_apk && tools/mb/mb.py run -s --no-default-dimensions -d pool Chrome -d device_os NMF26U -d device_type marlin //out/nougatbot chrome_public_test_vr_apk -- --shared-prefs-file=//chrome/android/shared_preference_files/test/vr_ddview_skipdon_setupcomplete.json --replace-system-package=com.google.vr.vrcore,//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk --num-retries 0 '--logcat-output-dir=${ISOLATED_OUTDIR}' --test-filter VrShellNavigationTest#*
,
Jul 9
To run these tests locally:
1) Flash a Pixel 1 XL with NMF26U Userdebug.
2) Do the following:
export DOWNLOAD_VR_TEST_APKS=1
python third_party/gvr-android-sdk/test-apks/update.py
3) Set up e.g. out/AndroidDebug with the following args.gn:
------
# Build arguments go here.
# See "gn args <out_dir> --list" for available build arguments.
target_os = "android"
target_cpu = "arm64" # (default)
is_debug = true # (default)
ffmpeg_branding = "Chrome"
proprietary_codecs = true
# Other args you may want to set:
is_component_build = true
# is_clang = true
strip_absolute_paths_from_debug_symbols = true
symbol_level = 1 # Faster build with fewer symbols. -g1 rather than -g2
# enable_incremental_javac = true # Much faster; experimental
use_goma = true
goma_dir = "/usr/local/google/home/kbr/goma"
-----
4) Apply the following patch to tools/swarming_client/isolate.py:
------
diff --git a/isolate.py b/isolate.py
index 795c4e4..407305d 100755
--- a/isolate.py
+++ b/isolate.py
@@ -1036,7 +1036,8 @@ def CMDrun(parser, args):
(' '.join(cmd), cwd))
result = 1
finally:
- file_path.rmtree(outdir)
+ # file_path.rmtree(outdir)
+ print 'Deliberately leaking temp dir ' + outdir
if complete_state.isolated_filepath:
complete_state.save_files()
------
Otherwise the logs will be lost when the run completes. (I didn't test this but found that the logs were lost)
5) Run via the following (replace AndroidDebug with the name of your build directory):
tools/mb/mb.py run //out/AndroidDebug chrome_public_test_vr_apk -- --shared-prefs-file=//chrome/android/shared_preference_files/test/vr_ddview_skipdon_setupcomplete.json --replace-system-package=com.google.vr.vrcore,//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk --num-retries 0 '--logcat-output-dir=${ISOLATED_OUTDIR}' --test-filter VrShellNavigationTest#*
This will take a long time and fail a lot of tests. I recommend starting with a --test-filter that runs just one of these.
Giving back to James as he's not OOO yet.
,
Jul 9
,
Jul 11
I have found and fixed the problem for the reland. On Android the compositor sets the max transfer buffer size to the size of a full screen texture, which is not necessarily divisible by the alignment. My fix is to round the transfer buffer size to the alignment. I found this script useful to run the tests quickly and output correct stack traces: # turn on and unlock screen adb shell input keyevent 82 adb shell input keyevent 82 time $OUT_DIR/bin/run_chrome_public_test_vr_apk \ --shared-prefs-file=//chrome/android/shared_preference_files/test/vr_ddview_skipdon_setupcomplete.json \ --replace-system-package=com.google.vr.vrcore,//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk \ --num-retries 0 \ --logcat-output-dir=$ISOLATED_OUTDIR \ --test-filter VrShellNavigationTest#* \ || cat $ISOLATED_OUTDIR/$(ls -Art $ISOLATED_OUTDIR | tail -n 1) | ./third_party/android_platform/development/scripts/stack --output-dir=$OUT_DIR In addition I found it helpful to comment out all the reboot-related stuff in third_party/catapult/devil/devil/android/tools/system_app.py EnableSystemAppModification, which would waste minutes rebooting the device multiple times for no reason otherwise.
,
Jul 11
The fixed reland CL is here, still waiting on a fix for bug 859998 before submitting: https://chromium-review.googlesource.com/c/chromium/src/+/1125503
,
Aug 29
,
Aug 31
|
|||||||||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||||||||
Comment 1 by bugdroid1@chromium.org
, Jul 3