New issue
Advanced search Search tips

Issue 623214 link

Starred by 2 users

Issue metadata

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



Sign in to add a comment

ECKEncryptedMediaTest.FileIOTest and OutputProtectionTest failure

Project Member Reported by alex...@chromium.org, Jun 24 2016

Issue description

These two tests were added in https://codereview.chromium.org/2085063002 and are failing on the Site Isolation Win FYI bot, which runs tests with the --isolate-extensions flag.

First failed build:
https://build.chromium.org/p/chromium.fyi/builders/Site%20Isolation%20Win/builds/15173

Looks like build 15174 is failing these as well.

Output for OutputProtectionTest:
[ RUN      ] ECKEncryptedMediaTest.OutputProtectionTest
[5196:2020:0624/131340:WARNING:chrome_browser_main_win.cc(420)] Command line too long for RegisterApplicationRestart
[5196:2020:0624/131340:WARNING:message_queue.cc(38)] Leaking 1 ports in unreceived messages
[5196:2020:0624/131340:WARNING:message_queue.cc(38)] Leaking 2 ports in unreceived messages
[5196:2020:0624/131340:WARNING:message_queue.cc(38)] Leaking 1 ports in unreceived messages
[4388:5428:0624/131340:ERROR:singleton_hwnd.cc(34)] Cannot create windows on non-UI thread!
[5196:2020:0624/131340:INFO:media_browsertest.cc(42)] 13:13:40.421 Starting HTTP server
[5196:2020:0624/131340:INFO:media_browsertest.cc(58)] 13:13:40.424 Running test URL: http://127.0.0.1:63223/eme_player.html?mediaFile=bear-a_enc-a.webm&mediaType=audio/webm;%20codecs=%22vorbis%22&keySystem=org.chromium.externalclearkey.outputprotectiontest
[5508:5004:0624/131340:ERROR:singleton_hwnd.cc(34)] Cannot create windows on non-UI thread!
[5196:2020:0624/131340:INFO:CONSOLE(277)] "13:13:40.656 -  Using UnitTestPlayer", source: http://127.0.0.1:63223/eme_player_js/utils.js (277)
[5196:2020:0624/131340:INFO:CONSOLE(277)] "13:13:40.659 -  Registering video event handlers.", source: http://127.0.0.1:63223/eme_player_js/utils.js (277)
[5196:2020:0624/131340:INFO:CONSOLE(277)] "13:13:40.660 -  Setting video media keys: org.chromium.externalclearkey.outputprotectiontest", source: http://127.0.0.1:63223/eme_player_js/utils.js (277)
[3544:2584:0624/131340:ERROR:singleton_hwnd.cc(34)] Cannot create windows on non-UI thread!
[5196:4684:0624/131340:WARNING:embedded_test_server.cc(193)] Request not handled. Returning 404: /favicon.ico
[5196:2020:0624/131340:INFO:CONSOLE(145)] "FAIL: NotSupportedError Unable to create CDM.", source: http://127.0.0.1:63223/eme_player_js/utils.js (145)
e:uild\slave\site_isolation_winuild\src\chromerowser\media\media_browsertest.cc(53): error: Value of: final_title
  Actual: "NOTSUPPORTEDERROR"
Expected: expected_title
Which is: "UNIT_TEST_SUCCESS"
[5196:2020:0624/131340:INFO:CONSOLE(277)] "13:13:40.792 -  Set document title to: NOTSUPPORTEDERROR, updated title: NOTSUPPORTEDERROR", source: http://127.0.0.1:63223/eme_player_js/utils.js (277)
[5196:2020:0624/131340:WARNING:url_request_context_getter.cc(43)] URLRequestContextGetter leaking due to no owning thread.
[  FAILED  ] ECKEncryptedMediaTest.OutputProtectionTest, where TypeParam =  and GetParam() =  (813 ms)

xhwang@: can you please take a look?  We'd like to keep this bot green, so if a quick fix isn't feasible, we should revert or disable the test for --isolation-extensions (done by including it in isolate-extensions.browser_tests.filter).
 

Comment 1 by xhw...@chromium.org, Jun 24 2016

Looking... Do you know what's special about --isolation-extensions?

Comment 2 by xhw...@chromium.org, Jun 24 2016

I don't really see how this test is site isolation related. I'll revert and investigate locally.
--isolate-extensions basically puts web iframes inside chrome-extension:// pages in separate processes.  Ditto for extension iframes inside web pages.

Interestingly, these tests appear to run fine with --site-per-process (which puts all cross-site iframes in separate processes), which is pretty surprising: https://build.chromium.org/p/chromium.fyi/builders/Site%20Isolation%20Linux/builds/9665

Comment 4 by xhw...@chromium.org, Jun 24 2016

If you look at the FileIO test, it's not new. I only renamed some js file name and some variable names so that those can be shared with the new OutputProtectionTest. I don't really see how these renaming could make the test fail under --isolation-extensions. But apparently there must be something wrong in my CL :)
Components: -Internals>Sandbox>SiteIsolation
Apparently, these tests are failing on some other Windows bots as well:

https://build.chromium.org/p/chromium.fyi/builders/Win%2010%20Fast%20Ring/builds/910
https://build.chromium.org/p/chromium.fyi/builders/MD%20Top%20Chrome%20Win%20material/builds/871

Thus, this is most likely unrelated to --isolate-extensions, so removing the site isolation label.  Rather, it's likely due to something about the configuration of those bots (which are all Windows bots).

Comment 6 by xhw...@chromium.org, Jun 25 2016

Status: Started (was: Assigned)
We have some detailed logs here:

https://build.chromium.org/p/chromium.fyi/builders/MD%20Top%20Chrome%20Win%20material/builds/871/steps/browser_tests/logs/ECKEncryptedMediaTest.FileIOTest

https://build.chromium.org/p/chromium.fyi/builders/MD%20Top%20Chrome%20Win%20material/builds/871/steps/browser_tests/logs/ECKEncryptedMediaTest.OutputProtectionTest

Note that the failure reason of the two tests are actually different. For FileIOTest, it time out after finishing all the tests. For OutputProtectionTest, we failed to create the CDM instance for the new key system (*.outputprotectiontest).

I think somehow the test is using an old clearkeycdm.dll, which doesn't pick up the changes in my CL. So the key message sent by the CDM is not recognized by Chrome, which is used to finish the test. Also, the old CDM doesn't support the new key system, so CDM instance creation would fail. Locally I tried to run the test with an old CDM and I can repro the failure.

But I don't understand how we end up using an old CDM on these bots. browser_tests depends clearkeycdmadapter, which then depends on clearkeycdm. Building browser_tests should trigger the CDM to be built. hmm...

Comment 7 by xhw...@chromium.org, Jun 25 2016

Cc: jrumm...@chromium.org ddorwin@chromium.org
Components: Internals>Media>Encrypted
Labels: -Pri-1 -OS-All OS-Windows Pri-2
Summary: ECKEncryptedMediaTest.FileIOTest and OutputProtectionTest failure (was: ECKEncryptedMediaTest.FileIOTest and OutputProtectionTest fail under --isolate-extensions)
Clearly clearkeycdmadapter.dll and clearkeycdm.dll are built:
https://build.chromium.org/p/chromium.fyi/builders/MD%20Top%20Chrome%20Win%20material/builds/871/steps/compile/logs/stdio

So now I don't understand what happened. But I still believe an old CDM is used somehow. I'll send out a CL to add a bit more logging and do a little bit experiment to see what's going on.

Comment 8 by xhw...@chromium.org, Jun 25 2016

Okay, this seems to be related to where dll is searched for on Windows. 

Locally, I have these new files built and supposed to be used. The test pass in with this build.
- out\GN\browser_tests
- out\GN\ClearKeyCdm\_platform_specific\win_x64\clearkeycdmadapter.dll
- out\GN\ClearKeyCdm\_platform_specific\win_x64\clearkeycdm.dll

Now, if I manually copy an old CDM to the build directory (out\GN\clearkeycdm.dll), without touching any other files, the test starts to fail. I think somehow out\GN\clearkeycdm.dll is used instead of the new one. It has to be related to the dll search order on Windows.

Note that recently I moved the CDMs from the build dir to the new path. This explains how we could have an old CDM at the build directory (in my case, out\GN).

So really what we need to do is to clobber these bots so that we can have a clean build.

Project Member

Comment 9 by bugdroid1@chromium.org, Aug 17 2016

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

commit 640ef5dcf6481ba1af50d37ee2c57039d08ed2aa
Author: xhwang <xhwang@chromium.org>
Date: Wed Aug 17 16:46:08 2016

(reland) media: Add OutputProtectionProxy

This reverts commit 7ce3db959f0f5b8d3837ac028ef8e150d4ac7147 and relands
22f8a43cae802c102b5e31211ca19466294a0157 without changes. I believe the
failure would be fixed after the bots are clobbered.

Original Description:

This class handles output protection query and request in the browser
process on all platforms. On ChromeOS, it delegates the operations on
the hardware displays to OutputProtectionDelegate. On other platforms,
it does not check hardware displays. On all platforms, it checks
whether there is any network link and adds it to the existing link mask.

This class will also be used to implement mojo OutputProtection service
on all platforms.

This CL also updated PPAPI cdm adapter and PPAPI code to enable output
protection calls on all platforms. A unit test is added via external
clear key tests.

TBR=ddorwin@chromium.org, jrummell@chromium.org, oshima@chromium.org, bbudge@chromium.org
BUG=592122, 589618,  623214 
TEST=Added new tests.

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

[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/browser/chromeos/display/output_protection_delegate.cc
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/browser/media/encrypted_media_browsertest.cc
[add] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/browser/media/output_protection_proxy.cc
[add] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/browser/media/output_protection_proxy.h
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.cc
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/browser/renderer_host/pepper/pepper_output_protection_message_filter.cc
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/browser/renderer_host/pepper/pepper_output_protection_message_filter.h
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/chrome_browser.gypi
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/chrome/renderer/media/chrome_key_systems.cc
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/cdm/ppapi/external_clear_key/clear_key_cdm.cc
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/cdm/ppapi/external_clear_key/clear_key_cdm.h
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/cdm/ppapi/ppapi_cdm_adapter.cc
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/cdm/ppapi/ppapi_cdm_adapter.h
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/test/data/eme_player_js/app_loader.js
[delete] https://crrev.com/75cf0e73ef617606f3e38c28d0b470f74ee821de/media/test/data/eme_player_js/file_io_test_player.js
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/test/data/eme_player_js/globals.js
[modify] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/test/data/eme_player_js/player_utils.js
[add] https://crrev.com/640ef5dcf6481ba1af50d37ee2c57039d08ed2aa/media/test/data/eme_player_js/unit_test_player.js

Status: Fixed (was: Started)
A lot of bots are "clobbered" when switching from gyp to gn. I also manually clobbered a few. Now it seems bots are mostly happy. Closing this now. If this is still happening on any bot, a clobber should work.

Sign in to add a comment