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

Issue 677841 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

ANGLE Vulkan needs to set the proper CWD for the layers to load

Project Member Reported by jmad...@chromium.org, Jan 2 2017

Issue description

Looking at the new angle_end2end_tests failure on this bot:

https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NVIDIA%20GeForce%20730%29?numbuilds=200

Example failure:

https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NVIDIA%20GeForce%20730%29/builds/2742

This is failing the new Vulkan tests:

RendererTest.RequestedRendererCreated/ES2_VULKAN
RendererTest.SimpleOperation/ES2_VULKAN
VulkanEXTTest.ValidationLayersAvaialable/ES2_VULKAN

[ RUN      ] RendererTest.RequestedRendererCreated/ES2_VULKAN

e:\b\c\b\win\src\third_party\angle\src\tests\test_utils\angletest.cpp(68): error: Failed

Vulkan standard validation layers are missing.

The layers are accessed through specific paths. Downloading and testing the isolate locally confirms things work as expected.

C:\src\chromium\src\tools\swarming_client>python isolateserver.py download -s 2dde8ecab3487874f28aa6a3e75829c7cf141ac7 -I https://isolateserver.appspot.com -t test5
To run this test please run from the directory C:\src\chromium\src\tools\swarming_client\test5\out\Release:
  .\angle_end2end_tests.exe

C:\src\chromium\src\tools\swarming_client\test5\out\Release>angle_end2end_tests.exe --gtest_filter=*VULKAN
<all tests pass>

My suspicion based on this failure and prior ones is that in this bot config we're not setting cwd to the one specified in the isolate. Looking at the test output:

https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NVIDIA%20GeForce%20730%29/builds/2742/steps/angle_end2end_tests/logs/stdio

 cmd: ['python', '-u', 'C:\\b\\c\\b\\Win7_Release__NVIDIA_GeForce_730_\\src\\infra\\scripts\\runtest_wrapper.py', '--', '--target', 'Release', '--factory-properties', '{"$recipe_engine": {"mode_flags": {"use_subprocess42": true}}, "blamelist": ["drott@chromium.org", "gambard@chromium.org", "mattcary@chromium.org", "mlippautz@chromium.org", "msarda@chromium.org", "olivierrobin@chromium.org", "perkj@chromium.org", "sigbjornf@opera.com", "v8-autoroll@chromium.org"], "branch": "master", "build_config": "Release", "build_data_dir": "C:\\\\b\\\\rr\\\\tmplrvjzc", "buildername": "Win7 Release (NVIDIA GeForce 730)", "buildnumber": 2742, "generate_gtest_json": true, "git_revision": "8d86b413cc000d9f411b9d27636b1435bd9cc0dd", "mastername": "chromium.gpu.fyi", "parent_buildername": "GPU Win Builder", "parent_buildnumber": 62019, "parent_got_angle_revision": "d7c5b0aa8f3cc8d948f6f2e88509d7952ce5ce5e", "parent_got_buildtools_revision": "0ef801087682b271e9ace93cfa93e9d3dea98079", "parent_got_nacl_revision": "cb27d1fd35d71dce84de1458243f19ef23868f75", "parent_got_revision": "8d86b413cc000d9f411b9d27636b1435bd9cc0dd", "parent_got_revision_cp": "refs/heads/master@{#441061}", "parent_got_swarming_client_revision": "ebc8dab6f8b8d79ec221c94de39a921145abd404", "parent_got_v8_revision": "f3a8df7a2fa2d17d445da114b882b923091a4373", "parent_got_v8_revision_cp": "refs/heads/5.7.371@{#1}", "parent_got_webrtc_revision": "f34307955e63d2e192e1384075bde3eadd220214", "parent_got_webrtc_revision_cp": "refs/heads/master@{#15859}", "parent_mastername": "chromium.gpu.fyi", "path_config": "kitchen", "project": "src", "recipe": "chromium", "recipe_repository": "https://chromium.googlesource.com/chromium/tools/build.git", "repository": "https://chromium.googlesource.com/chromium/src", "requestedAt": 1483350691, "revision": "8d86b413cc000d9f411b9d27636b1435bd9cc0dd", "slavename": "build71-b1", "test_results_server": "test-results.appspot.com", "use_gitiles": false, "workdir": "C:\\\\b\\\\build\\\\slave/Win7_Release__NVIDIA_GeForce_730_"}', '--build-properties', '{"$recipe_engine": {"mode_flags": {"use_subprocess42": true}}, "blamelist": ["drott@chromium.org", "gambard@chromium.org", "mattcary@chromium.org", "mlippautz@chromium.org", "msarda@chromium.org", "olivierrobin@chromium.org", "perkj@chromium.org", "sigbjornf@opera.com", "v8-autoroll@chromium.org"], "branch": "master", "build_config": "Release", "build_data_dir": "C:\\\\b\\\\rr\\\\tmplrvjzc", "buildername": "Win7 Release (NVIDIA GeForce 730)", "buildnumber": 2742, "generate_gtest_json": true, "git_revision": "8d86b413cc000d9f411b9d27636b1435bd9cc0dd", "mastername": "chromium.gpu.fyi", "parent_buildername": "GPU Win Builder", "parent_buildnumber": 62019, "parent_got_angle_revision": "d7c5b0aa8f3cc8d948f6f2e88509d7952ce5ce5e", "parent_got_buildtools_revision": "0ef801087682b271e9ace93cfa93e9d3dea98079", "parent_got_nacl_revision": "cb27d1fd35d71dce84de1458243f19ef23868f75", "parent_got_revision": "8d86b413cc000d9f411b9d27636b1435bd9cc0dd", "parent_got_revision_cp": "refs/heads/master@{#441061}", "parent_got_swarming_client_revision": "ebc8dab6f8b8d79ec221c94de39a921145abd404", "parent_got_v8_revision": "f3a8df7a2fa2d17d445da114b882b923091a4373", "parent_got_v8_revision_cp": "refs/heads/5.7.371@{#1}", "parent_got_webrtc_revision": "f34307955e63d2e192e1384075bde3eadd220214", "parent_got_webrtc_revision_cp": "refs/heads/master@{#15859}", "parent_mastername": "chromium.gpu.fyi", "path_config": "kitchen", "project": "src", "recipe": "chromium", "recipe_repository": "https://chromium.googlesource.com/chromium/tools/build.git", "repository": "https://chromium.googlesource.com/chromium/src", "requestedAt": 1483350691, "revision": "8d86b413cc000d9f411b9d27636b1435bd9cc0dd", "slavename": "build71-b1", "test_results_server": "test-results.appspot.com", "use_gitiles": false, "workdir": "C:\\\\b\\\\build\\\\slave/Win7_Release__NVIDIA_GeForce_730_"}', '--annotate=gtest', '--test-type=angle_end2end_tests', '--step-name=angle_end2end_tests', '--test-launcher-summary-output', 'c:\\users\\chrome~1.lab\\appdata\\local\\temp\\tmpik8j0i.json', '--generate-json-file', '-o', 'gtest-results/angle_end2end_tests.exe', '--builder-name=Win7 Release (NVIDIA GeForce 730)', '--slave-name=build71-b1', '--build-number=2742', 'angle_end2end_tests.exe', '--use-gpu-in-tests', '--test-launcher-retry-limit=0']
 cwd: C:\b\c\b\Win7_Release__NVIDIA_GeForce_730_

Something here might be amiss, but I'm not exactly sure what. I looked at runtest_wrapper.py and runtest.py and couldn't see where the directory was set.

Ken can you help here? I'd be happy to try fixing this if you could tell me what needs to be done.
 
Cc: sunn...@chromium.org
cc'ing current GPU wrangler.

Comment 2 by kbr@chromium.org, Jan 3 2017

Cc: kbr@chromium.org phajdan.jr@chromium.org katthomas@chromium.org
Components: -Infra Infra>Client
Owner: jmad...@chromium.org
We discussed this briefly during today's ANGLE meeting. Essentially, the current working directory is not well guaranteed on the bots. It looks like Swarming does a good job of making it consistent, but the non-Swarmed bots set it differently.

Can you change things so that the path to these DLLs is specified relatively to the executable, rather than the current working directory? This was needed for some of the resources used by other tests on these bots. Then either the application can compute the path to the resource, knowing where the executable lives on disk, or the application can set CWD before continuing. The first approach would be preferred. I don't know where exactly in the recipes the CWD is set.

I can change ANGLE to set the cwd before loading the layers, or make a more extensive change to the layers to add a method to communicate a path to load from at runtime. I think the first option is preferable to me, we can set the CWD only if layers are requested via the Vulkan extension. I'll give this a go.
Summary: ANGLE Vulkan needs to set the proper CWD for the layers to load (was: Standalone non-swarmed GPU FYI tester bots do not seem to set the proper CWD)
Project Member

Comment 5 by bugdroid1@chromium.org, Jan 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/dcab56a1b8158aafc37030f09606b9e888e82663

commit dcab56a1b8158aafc37030f09606b9e888e82663
Author: Jamie Madill <jmadill@chromium.org>
Date: Thu Jan 05 19:47:34 2017

Move some file utils to common.

Since common is shared through all ANGLE code (libANGLE/tests/samples)
this is the most general place for these utils, and will give libANGLE
access to them. We'll need them to get the current executable dir for
loading the Vulkan layers.

This also means we'll need to fix the global static variable use when
we have the ability.

BUG= angleproject:1319 
BUG= chromium:677841 

Change-Id: I7af61920635135b28a2f02f4a8d019ee88c9dd28
Reviewed-on: https://chromium-review.googlesource.com/425440
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>

[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/tests/BUILD.gn
[rename] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/common/system_utils_mac.cpp
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/samples/samples.gyp
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/util/windows/Windows_system_utils.cpp
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/util/system_utils.h
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/util/util.gyp
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/tests/deqp.gypi
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/BUILD.gn
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/angle.gyp
[add] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/common/system_utils.h
[modify] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/libGLESv2.gypi
[add] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/common/system_utils_win.cpp
[rename] https://crrev.com/dcab56a1b8158aafc37030f09606b9e888e82663/src/common/system_utils_linux.cpp

Project Member

Comment 6 by bugdroid1@chromium.org, Jan 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b

commit a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b
Author: Jamie Madill <jmadill@chromium.org>
Date: Fri Jan 06 15:43:44 2017

Vulkan: Load layers relative to executable dir.

Instead of baking in a relative path and expecting the app to run from
a fixed directory, we can change the CWD at runtime so the layers can
load relative to the current executable directory.

Future alternatives could include modifying the layers SDK to provide
a path dynamically, but for now the relative paths must be baked in
at compile-time.

BUG= angleproject:1319 
BUG= chromium:677841 

Change-Id: I443b6b35d38276ea667cdf08ec2204ea280b6cec
Reviewed-on: https://chromium-review.googlesource.com/425441
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>

[modify] https://crrev.com/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b/src/libANGLE/renderer/vulkan/RendererVk.cpp
[modify] https://crrev.com/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b/src/vulkan_support/BUILD.gn
[modify] https://crrev.com/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b/src/common/system_utils_mac.cpp
[modify] https://crrev.com/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b/scripts/generate_vulkan_header.py
[modify] https://crrev.com/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b/src/common/system_utils.h
[modify] https://crrev.com/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b/src/common/system_utils_win.cpp
[modify] https://crrev.com/a66779fcf2aeed8588bcc1ba6a3668d81e65bf3b/src/common/system_utils_linux.cpp

Project Member

Comment 7 by bugdroid1@chromium.org, Jan 6 2017

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

commit d6f9158ff62fff689993067c3273ccb7beecbc16
Author: jmadill <jmadill@chromium.org>
Date: Fri Jan 06 21:10:15 2017

Roll ANGLE a818c32..a66779f

https://chromium.googlesource.com/angle/angle.git/+log/a818c32..a66779f

BUG= chromium:677841 , chromium:644610 

TBR=geofflang@chromium.org

TEST=bots

CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

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

[modify] https://crrev.com/d6f9158ff62fff689993067c3273ccb7beecbc16/DEPS

Status: Fixed (was: Assigned)
The bot has since turned green. Mark as fixed.

Sign in to add a comment