New issue
Advanced search Search tips

Issue 735410 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Task

Blocking:
issue 729953



Sign in to add a comment

Loading Dispatcher: tests that fail if throttling is enabled always

Project Member Reported by toyoshim@chromium.org, Jun 21 2017

Issue description

chrome_public_test_vr_apk (with patch) on Android chrome_public_test_vr_apk (with patch) on Android
Run on OS: 'Android'
failures:
org.chromium.chrome.browser.vr_shell.WebVrTabTest#testPoseDataUnfocusedTab

browser_tests (with patch) browser_tests (with patch)
Run on OS: 'Ubuntu-14.04'
swarming pending 38s
failures:
FileSystemProviderApiTest.ReadFile

webkit_layout_tests (with patch) webkit_layout_tests (with patch)
Run on OS: 'Ubuntu-14.04' (and mac)
Total tests: 68618
* Passed: 58417 (58379 expected, 38 unexpected)
* Skipped: 8757 (8757 expected, 0 unexpected)
* Failed: 1381 (1380 expected, >>>1 unexpected<<<)
* Flaky: 63 (63 expected, 0 unexpected)

Unexpected Failures:
* virtual/off-main-thread-fetch/http/tests/serviceworker/chromium/stop-worker-during-respond-with.html

 
Status: Started (was: Assigned)
Following two tests could fail.
virtual/off-main-thread-fetch/external/wpt/service-workers/service-worker/fetch-canvas-tainting.https.html
virtual/off-main-thread-fetch/external/wpt/service-workers/service-worker/fetch-canvas-tainting-cache.https.html

https://chromium-review.googlesource.com/c/544637/ would fix them and stop-worker-during-respond-with.html
Project Member

Comment 2 by bugdroid1@chromium.org, Jun 23 2017

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

commit 8253b2876a22140cf05ee61d16982a185b20db3d
Author: Takashi Toyoshima <toyoshim@chromium.org>
Date: Fri Jun 23 11:56:34 2017

WorkerOrWorkletGlobalScope needs to finalize ResourceFetcher

In usual cases, ResourceFetcher::StopFetching and ClearContext are
called by DocumentLoader or FrameLoader in the disposal sequence.

But, when we use WorkerFetchContext by enabling off-main-thread-fetch,
ResourceFetcher is owned by WorkerFetchContext instead of Loaders.
Thus, ResourceFetcher isn't finalized correctly.

This patch runs ResourceFetcher finalization steps in
WorkerOrWorkletGlobalScope instead of Loaders so that
WorkerOrWorkletGlobalScope can be disposed safely even in the case
of having active loading tasks on GC collecting it.

This problem can be observed in the layout test,
http/tests/serviceworker/chromium/stop-worker-during-respond-with.html,
when off-main-thread-fetch feature is enabled. But test itself can pass
on the head.

BUG= 735410 

Change-Id: Ib5526b0e35c0ebe9a55589f0ff44e0180db19f91
Reviewed-on: https://chromium-review.googlesource.com/544637
Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Reviewed-by: Tsuyoshi Horo <horo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#481859}
[modify] https://crrev.com/8253b2876a22140cf05ee61d16982a185b20db3d/third_party/WebKit/Source/core/workers/WorkerOrWorkletGlobalScope.cpp

Here is the test script that is running on the test:
payload to run: https://cs.chromium.org/chromium/src/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js

Mutliple FileReader instances are used to load blob data as below, but each ResourceLoader won't finish to load for a long time.
[1:1:0712/203424.977385:ERROR:ResourceLoader.cpp(100)] ResourceRequest::Url: "blob:chrome-extension://pkplfbidichfdicaijlchgnapepdginl/ed21341f-c5e6-4fa6-8c2c-0e40dfa329f6"
[1:1:0712/203424.977479:ERROR:ResourceLoader.cpp(101)] ResourceRequest::RequestContext: 17
[1:1:0712/203424.977527:ERROR:ResourceLoadScheduler.cpp(91)] 0x12991b2e5f68; Request; id = 143
[1:1:0712/203424.979012:ERROR:ResourceLoader.cpp(99)] #0 0x7f2d6432365c base::debug::StackTrace::StackTrace()
#1 0x7f2d5ba60e76 blink::ResourceLoader::Start()
#2 0x7f2d5ba53314 blink::ResourceFetcher::StartLoad()
#3 0x7f2d5ba519b6 blink::ResourceFetcher::RequestResource()
#4 0x7f2d5ba3f073 blink::RawResource::Fetch()
#5 0x7f2d5cf6da32 blink::DocumentThreadableLoader::LoadRequestAsync()
#6 0x7f2d5cf69b5d blink::DocumentThreadableLoader::LoadRequest()
#7 0x7f2d5cf699cc blink::DocumentThreadableLoader::DispatchInitialRequest()
#8 0x7f2d5cf6901d blink::DocumentThreadableLoader::Start()
#9 0x7f2d5c9fda38 blink::FileReaderLoader::Start()
#10 0x7f2d5c9f9ee9 blink::FileReader::ExecutePendingRead()
#11 0x7f2d5c9fc63d blink::FileReader::ThrottlingController::PushReader()
#12 0x7f2d5c9f9d83 blink::FileReader::ThrottlingController::PushReader()
#13 0x7f2d5c9f9348 blink::FileReader::ReadInternal()
#14 0x7f2d5c9f99b8 blink::FileReader::readAsText()
#15 0x7f2d5c9f99f0 blink::FileReader::readAsText()
#16 0x7f2d5d2b5b83 blink::V8FileReader::readAsTextMethodCallback()
#17 0x7f2d6260719a v8::internal::FunctionCallbackArguments::Call()
#18 0x7f2d626dc186 v8::internal::(anonymous namespace)::HandleApiCallHelper<>()
#19 0x7f2d626dabd0 v8::internal::Builtin_Impl_HandleApiCall()
#20 0x1bbbcd0844c4 <unknown>

FileReader is already throttled by FileReader::ThrottlingController.
So, ResourceLoadScheduler would like to bypass FileReader requests in short term, and idealy we could merge it to ResourceLoadScheduler.
Status: Fixed (was: Started)

Sign in to add a comment