New issue
Advanced search Search tips

Issue 800898 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocked on:
issue 800901



Sign in to add a comment

Fetching a blob URL right before it is revoked is flaky on Chromium

Project Member Reported by robertma@chromium.org, Jan 10 2018

Issue description

FileAPI/url/url-with-fetch.any.worker.html
FileAPI/url/url-with-xhr.any.worker.html

The two test files were newly introduced in the upstream. They are flaky on Chromium and are blocking wpt-import. Marking them as flaky in TestExpectations.
 

Comment 1 by mek@chromium.org, Jan 10 2018

Blockedon: 800901

Comment 2 by mek@chromium.org, Jan 10 2018

Cc: -mek@chromium.org
Owner: mek@chromium.org
Status: Assigned (was: Untriaged)
The problem here being a race between fetching a blob URL and the blob URL being revoked. In the window case both these happen properly sequenced, but in the worker case it is possible for the revocation to outrun the fetch, resulting in the fetch to fail. Bug 800901 tracks the more general issue causing this.
Project Member

Comment 3 by bugdroid1@chromium.org, Jan 10 2018

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

commit d4acc38846dad57fa52c586a0ac66a84944fc49a
Author: Robert Ma <robertma@chromium.org>
Date: Wed Jan 10 20:14:52 2018

Mark some new FileAPI tests as flaky

Including the virtual/mojo-blobs variants.

Setting No-Try because the tests haven't been imported.

Bug: 800898
No-Try: True
Change-Id: Iaab2fdb387a57465f9517514d29695234f8636c1
Reviewed-on: https://chromium-review.googlesource.com/860627
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Commit-Queue: Robert Ma <robertma@chromium.org>
Cr-Commit-Position: refs/heads/master@{#528404}
[modify] https://crrev.com/d4acc38846dad57fa52c586a0ac66a84944fc49a/third_party/WebKit/LayoutTests/TestExpectations

Project Member

Comment 5 by bugdroid1@chromium.org, Jan 11 2018

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

commit 4c1abec94b8ccef0ded4c1b110efded89713f5ff
Author: Friedrich Horschig <fhorschig@chromium.org>
Date: Thu Jan 11 11:50:31 2018

Adjust wpt/FileAPI/url/ expectations

This CL adjusts the expectations for the wpt/FileAPI/url/ tests as
reverting the initial change would affect the whole wpt roll out.

TBR=jsbell@chromium.org

Bug:  801078 , 800898
Change-Id: I9b77927562815996f402a4bed91c14dbf23048e3
Reviewed-on: https://chromium-review.googlesource.com/860004
Commit-Queue: Friedrich Horschig <fhorschig@chromium.org>
Reviewed-by: Friedrich Horschig <fhorschig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#528598}
[modify] https://crrev.com/4c1abec94b8ccef0ded4c1b110efded89713f5ff/third_party/WebKit/LayoutTests/TestExpectations

Comment 6 by mek@chromium.org, Jan 11 2018

Both the linked failures for the url-format test are timeouts, not failures, so those expectations don't even help for those...
Project Member

Comment 7 by bugdroid1@chromium.org, Jan 11 2018

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

commit 3dc9f6270b5a2cfc557a6fab560dae0af51d6d3e
Author: Marijn Kruisselbrink <mek@chromium.org>
Date: Thu Jan 11 23:10:23 2018

Fix url-format.any.js test expectations.

It never failed, so [ Pass Failure ] didn't make sense. It does however
timeout regularly, so reduce the url_count it uses to check if blob URLs
are more or less unique by half.

And since sandboxed-iframe.html includes url-format.any.js, also turn
that test back on, since I'm pretty sure its failures were the same
timeout.

Bug: 800898,  801078 
Change-Id: I90ae00190282ee8915867535dbb39aa171950245
Reviewed-on: https://chromium-review.googlesource.com/861948
Reviewed-by: Joshua Bell <jsbell@chromium.org>
Commit-Queue: Joshua Bell <jsbell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#528802}
[modify] https://crrev.com/3dc9f6270b5a2cfc557a6fab560dae0af51d6d3e/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/3dc9f6270b5a2cfc557a6fab560dae0af51d6d3e/third_party/WebKit/LayoutTests/external/wpt/FileAPI/url/url-format.any.js

Comment 8 by mek@chromium.org, Jan 31 2018

Summary: Fetching a blob URL right before it is revoked is flaky on Chromium (was: FileAPI/url/url-with-fetch.any.worker.html and url-with-xhr.any.worker.html tests are flaky on Chromium)
Project Member

Comment 9 by bugdroid1@chromium.org, Feb 9 2018

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

commit 20c2e2937980e39373edc4446369c7410aa38585
Author: Marijn Kruisselbrink <mek@chromium.org>
Date: Fri Feb 09 22:07:57 2018

[Mojo Blob URLs] Refactor Blob URL loading for subresources.

This changes the XHR and fetch codepaths to resolve blob URLs earlier
(i.e when the request is created rather than when the fetch is made), in
order to fix bugs where the blob URL is revoked after creating a request
but before fetching.

This also addresses race conditions between revoking blob URLs and
fetching them by resolving a blob URL as soon as possible for subresource
requests.

Not addressed yet are navigation and download requests, that will be
done in follow ups.

Bug: 800901, 800898,  695031 , 807435
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo
Change-Id: Ifd5eb11abaf04c091c51e607fdaeafa0c89bc1a9
Reviewed-on: https://chromium-review.googlesource.com/893606
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Marijn Kruisselbrink <mek@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535845}
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/content/renderer/renderer_blink_platform_impl.cc
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/content/renderer/renderer_blink_platform_impl.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/content/renderer/service_worker/service_worker_fetch_context_impl.cc
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/content/renderer/service_worker/service_worker_fetch_context_impl.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/content/renderer/service_worker/worker_fetch_context_impl.cc
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/content/renderer/service_worker/worker_fetch_context_impl.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/NeverFixTests
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/virtual/mojo-blob-urls/external/wpt/FileAPI/url/README.txt
[add] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/virtual/mojo-blob-urls/external/wpt/FileAPI/url/cross-global-revoke.sub-expected.txt
[add] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/virtual/mojo-blob-urls/external/wpt/FileAPI/url/url-with-fetch.any-expected.txt
[add] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/LayoutTests/virtual/mojo-blob-urls/external/wpt/FileAPI/url/url-with-xhr.any-expected.txt
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/fetch/FetchManager.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/fetch/FetchRequestData.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/fetch/FetchRequestData.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/fetch/Request.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/fileapi/PublicURLManager.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/fileapi/PublicURLManager.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/loader/FrameFetchContext.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/loader/ThreadableLoaderTest.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/loader/WorkerFetchContext.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/loader/WorkerFetchContext.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/platform/blob/BUILD.gn
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/platform/loader/BUILD.gn
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/platform/loader/fetch/FetchContext.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/platform/loader/fetch/ResourceLoaderOptions.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Source/platform/loader/testing/MockFetchContext.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/Tools/Scripts/audit-non-blink-usage.py
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/public/platform/Platform.h
[modify] https://crrev.com/20c2e2937980e39373edc4446369c7410aa38585/third_party/WebKit/public/platform/WebWorkerFetchContext.h

Project Member

Comment 10 by bugdroid1@chromium.org, Jun 14 2018

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

commit dab7b3e524e95bcc2c2ca27c8d6b650115d007c1
Author: Marijn Kruisselbrink <mek@chromium.org>
Date: Thu Jun 14 16:54:05 2018

Add a web platform test to verify various aspects of creating workers from blobs.

Bug:  852249 , 800898
Change-Id: Ic885db66683d40f259f4f8c0ddf82d6ea3b4c144
Reviewed-on: https://chromium-review.googlesource.com/1099361
Commit-Queue: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567308}
[modify] https://crrev.com/dab7b3e524e95bcc2c2ca27c8d6b650115d007c1/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/dab7b3e524e95bcc2c2ca27c8d6b650115d007c1/third_party/WebKit/LayoutTests/external/wpt/workers/worker-from-blob-url.window.js

Components: Blink>Storage>FileAPI
Components: -Blink>FileAPI
Project Member

Comment 13 by bugdroid1@chromium.org, Nov 20

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

commit abfc03b188f78885c06365108f0c0c0bab1a12e6
Author: Hiroki Nakagawa <nhiroki@chromium.org>
Date: Tue Nov 20 03:40:57 2018

Worker: Separate worker-from-blob-url.window.html to filter out failing tests in a more fine-grained way

This test file should be separated into 2 files (one for dedicated workers and
the other for shared workers). This is because Edge and Safari don't support
shared workers, and Chrome has an issue on shared workers with Blob URL
revocation, so some tests are expected to fail on them. By separating the file,
browsers can filter out failing tests in a more fine grained way.

Bug: 655458, 800898
Change-Id: I9ea6c76dc9b6841bf6aaa98251c81f292dd460cf
Reviewed-on: https://chromium-review.googlesource.com/c/1337129
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Hiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609586}
[modify] https://crrev.com/abfc03b188f78885c06365108f0c0c0bab1a12e6/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService
[modify] https://crrev.com/abfc03b188f78885c06365108f0c0c0bab1a12e6/third_party/WebKit/LayoutTests/SlowTests
[modify] https://crrev.com/abfc03b188f78885c06365108f0c0c0bab1a12e6/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/abfc03b188f78885c06365108f0c0c0bab1a12e6/third_party/WebKit/LayoutTests/external/wpt/workers/dedicated-worker-from-blob-url.window.js
[rename] https://crrev.com/abfc03b188f78885c06365108f0c0c0bab1a12e6/third_party/WebKit/LayoutTests/external/wpt/workers/shared-worker-from-blob-url.window.js

Sign in to add a comment