Skip to content

script: Omit GC for iframe "about:blank" document with inactive state#41284

Open
tharkum wants to merge 1 commit intoservo:mainfrom
tharkum:script-iframe-suspend-blank-document-gc
Open

script: Omit GC for iframe "about:blank" document with inactive state#41284
tharkum wants to merge 1 commit intoservo:mainfrom
tharkum:script-iframe-suspend-blank-document-gc

Conversation

@tharkum
Copy link
Copy Markdown
Contributor

@tharkum tharkum commented Dec 15, 2025

If activity state of the document is change to Inactive the user agent is calling garbage collection for the script global JSContext unconditionally and some short-lived DOM objects (which is not attached to DOM document) is immediately gone.

Let's omit GC for iframe document with inactive state and "about:blank" URL to make GC it less aggressive for top level DOM objects.

Testing: Improvements in the following tests

  • /html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html
  • /html/semantics/embedded-content/media-elements/autoplay-default-feature-policy.https.sub.html
  • /html/semantics/embedded-content/media-elements/autoplay-disabled-by-feature-policy.https.sub.html

Fixes: #41138
Fixes: #41193
Fixes: #41221

@tharkum tharkum requested a review from gterzian as a code owner December 15, 2025 14:05
@servo-highfive servo-highfive added S-awaiting-review There is new code that needs to be reviewed. S-needs-rebase There are merge conflict errors. labels Dec 15, 2025
@tharkum tharkum force-pushed the script-iframe-suspend-blank-document-gc branch from 6fd79f7 to 2907373 Compare December 15, 2025 14:09
@servo-highfive servo-highfive removed the S-needs-rebase There are merge conflict errors. label Dec 15, 2025
If activity state of the document is change to `Inactive`
the user agent is calling garbage collection for the
script global `JSContext` unconditionally and some short-lived
DOM objects (which is not attached to DOM document) is immediately gone.

Let's omit GC for `iframe` document with inactive state and
"about:blank" URL to make GC it less aggressive for top level DOM objects.

Testing: Improvements in the following tests
- /html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html
- /html/semantics/embedded-content/media-elements/autoplay-default-feature-policy.https.sub.html
- /html/semantics/embedded-content/media-elements/autoplay-disabled-by-feature-policy.https.sub.html

Fixes: servo#41138
Fixes: servo#41193
Fixes: servo#41221

Signed-off-by: Andrei Volykhin <[email protected]>
@tharkum tharkum force-pushed the script-iframe-suspend-blank-document-gc branch from 2907373 to 48de666 Compare December 15, 2025 14:13
@tharkum
Copy link
Copy Markdown
Contributor Author

tharkum commented Dec 15, 2025

Implemented proposed option 4 - add condition then should be called GC:

  • It is top-level frame (document URL is not restricted) or iframe (document URL is NOT "about:blank")

List of previously GC-ed objects (~88) from top-level frame on first suspended iframe document (with "about:blank" URL)

script::dom::pipelineid::PipelineId - 0x7aa1560b3050
script::dom::debuggeradddebuggeeevent::DebuggerAddDebuggeeEvent - 0x7aa068608140
script::dom::pipelineid::PipelineId - 0x7aa068604200
script::dom::debuggeradddebuggeeevent::DebuggerAddDebuggeeEvent - 0x7aa0814626e0
script::dom::pipelineid::PipelineId - 0x7aa1560b3250
script::dom::debuggeradddebuggeeevent::DebuggerAddDebuggeeEvent - 0x7aa081462140
script::dom::event::Event - 0x7aa068636420
script::dom::servoparser::ServoParser - 0x7aa068652700
script::dom::performance::performancenavigationtiming::PerformanceNavigationTiming - 0x7aa068660300
script::dom::event::Event - 0x7aa0686364e0
script::dom::event::Event - 0x7aa068636600
script::dom::url::URL - 0x7aa156000660
script::dom::urlsearchparams::URLSearchParams - 0x7aa0686052d0
script::dom::event::Event - 0x7aa0686366c0
script::dom::event::Event - 0x7aa068636660
script::dom::event::Event - 0x7aa068636720
script::dom::event::Event - 0x7aa0686367e0
script::dom::event::Event - 0x7aa068636780
script::dom::domrect::DOMRect - 0x7aa068605450
script::dom::domrect::DOMRect - 0x7aa0686054b0
script::dom::domrect::DOMRect - 0x7aa068605510
script::dom::domrect::DOMRect - 0x7aa068605570
script::dom::domrect::DOMRect - 0x7aa0686055d0
script::dom::domrect::DOMRect - 0x7aa068605630
script::dom::domrect::DOMRect - 0x7aa068605690
script::dom::domrect::DOMRect - 0x7aa0686056f0
script::dom::domrect::DOMRect - 0x7aa068605750
script::dom::event::Event - 0x7aa068636540
script::dom::event::Event - 0x7aa0814422a0
script::dom::event::Event - 0x7aa081442300
script::dom::event::Event - 0x7aa068636840
script::dom::pagetransitionevent::PageTransitionEvent - 0x7aa15604ed90
script::dom::domrect::DOMRect - 0x7aa0686057e0
script::dom::domrect::DOMRect - 0x7aa0686057b0
script::dom::domrect::DOMRect - 0x7aa068605840
script::dom::mouseevent::MouseEvent - 0x7aa081462500
script::dom::mouseevent::MouseEvent - 0x7aa081462460
script::dom::mouseevent::MouseEvent - 0x7aa068609d60
script::dom::focusevent::FocusEvent - 0x7aa06861a9a0
script::dom::mouseevent::MouseEvent - 0x7aa068609cc0
script::dom::mouseevent::MouseEvent - 0x7aa068609c20
script::dom::messageevent::MessageEvent - 0x7aa0a2a4d680
script::dom::html::htmlvideoelement::HTMLVideoElement - 0x7aa0686a3000
script::dom::html::htmlvideoelement::HTMLVideoElement - 0x7aa0686a3500
script::dom::attr::Attr - 0x7aa068664040
script::dom::event::Event - 0x7aa068636900
script::dom::event::Event - 0x7aa068636960
script::dom::event::Event - 0x7aa0686369c0
script::dom::domrect::DOMRect - 0x7aa156040090
script::dom::domrect::DOMRect - 0x7aa068605990
script::dom::domrect::DOMRect - 0x7aa068605a80
script::dom::mouseevent::MouseEvent - 0x7aa15605d140
script::dom::event::Event - 0x7aa068636a80
script::dom::event::Event - 0x7aa068636ae0
script::dom::mouseevent::MouseEvent - 0x7aa15605d1e0
script::dom::mouseevent::MouseEvent - 0x7aa0686099a0
script::dom::mouseevent::MouseEvent - 0x7aa068609ae0
script::dom::mouseevent::MouseEvent - 0x7aa068609900
script::dom::messageevent::MessageEvent - 0x7aa0a2a4d7c0
script::dom::event::Event - 0x7aa068636d20
script::dom::servoparser::ServoParser - 0x7aa068652e00
script::dom::performance::performancenavigationtiming::PerformanceNavigationTiming - 0x7aa068661980
script::dom::event::Event - 0x7aa068636de0
script::dom::event::Event - 0x7aa081442480
script::dom::event::Event - 0x7aa081442360
script::dom::event::Event - 0x7aa0686370e0
script::dom::pagetransitionevent::PageTransitionEvent - 0x7aa06861acb0
script::dom::event::Event - 0x7aa068637260
script::dom::pagetransitionevent::PageTransitionEvent - 0x7aa15604f110
script::dom::event::Event - 0x7aa0814426c0
script::dom::domrectlist::DOMRectList - 0x7aa068605480
script::dom::domrectlist::DOMRectList - 0x7aa0686054e0
script::dom::domrectlist::DOMRectList - 0x7aa068605540
script::dom::domrectlist::DOMRectList - 0x7aa0686055a0
script::dom::domrectlist::DOMRectList - 0x7aa068605600
script::dom::domrectlist::DOMRectList - 0x7aa068605660
script::dom::domrectlist::DOMRectList - 0x7aa0686056c0
script::dom::domrectlist::DOMRectList - 0x7aa068605720
script::dom::domrectlist::DOMRectList - 0x7aa068605780
script::dom::nodelist::NodeList - 0x7aa068601c00
script::dom::domrectlist::DOMRectList - 0x7aa068605420
script::dom::domrectlist::DOMRectList - 0x7aa068605810
script::dom::domrectlist::DOMRectList - 0x7aa068605870
script::dom::nodelist::NodeList - 0x7aa0686a8140
script::dom::domrectlist::DOMRectList - 0x7aa0686058a0
script::dom::domrectlist::DOMRectList - 0x7aa068605ab0
script::dom::domrectlist::DOMRectList - 0x7aa068605960
script::dom::nodelist::NodeList - 0x7aa0686a8c40

@tharkum tharkum added the T-linux-wpt Do a try run of the WPT label Dec 15, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Dec 15, 2025
@github-actions
Copy link
Copy Markdown

🔨 Triggering try run (#20235509924) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

Test results for linux-wpt from try job (#20235509924):

Flaky unexpected result (31)
  • OK /_mozilla/mozilla/getBoundingClientRect.html (#39668)
    • FAIL [expected PASS] subtest: getBoundingClientRect 1

      assert_equals: expected 62 but got 60.35
      

  • OK /_mozilla/webxr/create_session.https.html
    • FAIL [expected PASS] subtest: create_session

      can't access property "simulateDeviceConnection", navigator.xr.test is undefined
      

  • OK /_mozilla/webxr/obtain_frame.https.html
    • FAIL [expected PASS] subtest: obtain_frame

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "simulateDeviceConnection", navigator.xr.test is undefined"
      

  • ERROR [expected TIMEOUT] /_mozilla/webxr/sessionavailable.https.html
  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • PASS [expected FAIL] subtest: WebGL test #45
    • PASS [expected FAIL] subtest: WebGL test #47
    • PASS [expected FAIL] subtest: WebGL test #49
    • PASS [expected FAIL] subtest: WebGL test #51
    • FAIL [expected PASS] subtest: WebGL test #53

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #55

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #57

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #59

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • PASS [expected FAIL] subtest: WebGL test #61
    • PASS [expected FAIL] subtest: WebGL test #63
    • And 10 more unexpected results...
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • OK /css/css-fonts/generic-family-keywords-002.html (#40929)
    • FAIL [expected PASS] subtest: font-family: -webkit-serif treated as &lt;font-family&gt;, not &lt;generic-name&gt;

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-sans-serif treated as &lt;font-family&gt;, not &lt;generic-name&gt;

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-cursive treated as &lt;font-family&gt;, not &lt;generic-name&gt;

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-fantasy treated as &lt;font-family&gt;, not &lt;generic-name&gt;

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-monospace treated as &lt;font-family&gt;, not &lt;generic-name&gt;

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-system-ui treated as &lt;font-family&gt;, not &lt;generic-name&gt;

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-math treated as &lt;font-family&gt;, not &lt;generic-name&gt;

      assert_equals: expected 30 but got 50
      

    • PASS [expected FAIL] subtest: font-family: -webkit-generic(fangsong) treated as &lt;font-family&gt;, not &lt;generic-name&gt;
    • PASS [expected FAIL] subtest: font-family: -webkit-generic(kai) treated as &lt;font-family&gt;, not &lt;generic-name&gt;
    • PASS [expected FAIL] subtest: font-family: -webkit-generic(khmer-mul) treated as &lt;font-family&gt;, not &lt;generic-name&gt;
    • And 12 more unexpected results...
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(fangsong) (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-monospace (drawing text in a canvas)
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - empty name exists
    • PASS [expected FAIL] subtest: Single value - Non-empty name exists
    • PASS [expected FAIL] subtest: Null value should submit nothing
  • OK /fetch/metadata/window-open.https.sub.html (#40339)
    • FAIL [expected PASS] subtest: Same-site window, forced, reloaded

      The operation is insecure.
      

  • CRASH [expected OK] /html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-navigation-cross-origin.html
  • OK /html/browsers/history/the-history-interface/traverse_the_history_2.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
      

  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html (#39703)
    • FAIL [expected PASS] subtest: Meta refresh of the original iframe is not blocked if moved into a sandboxed iframe

      uncaught exception: Error: assert_unreached: The iframe into which the meta was moved must not refresh Reached unreachable code
      

  • TIMEOUT /html/semantics/embedded-content/media-elements/preserves-pitch.html (#40352)
    • PASS [expected TIMEOUT] subtest: Speed-ups should not change the pitch when preservesPitch=true
    • PASS [expected NOTRUN] subtest: Slow-downs should not change the pitch when preservesPitch=true
    • TIMEOUT [expected NOTRUN] subtest: Speed-ups should change the pitch when preservesPitch=false

      Test timed out
      

  • OK [expected TIMEOUT] /html/semantics/embedded-content/media-elements/src_object_blob.html (#40340)
    • PASS [expected TIMEOUT] subtest: HTMLMediaElement.srcObject blob
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html (#39702)
    • TIMEOUT [expected FAIL] subtest: Sandboxed iframe can not navigate other frame's popup

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (formdata event)
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: Basic test (formdata event)

      assert_equals: expected "basic=test\r\n" but got ""
      

    • FAIL [expected PASS] subtest: text/plain: Basic File test (normal form)

      assert_equals: expected "basic=file-test.txt\r\n" but got ""
      

    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (formdata event)
  • CRASH [expected OK] /html/semantics/forms/the-fieldset-element/disabled-003.html (#31730, #39631)
  • CRASH [expected TIMEOUT] /html/semantics/forms/the-select-element/customizable-select/select-appearance-picker-select-border.html
  • PASS [expected FAIL] /png/apng/acTL-plays-two.html (#41191)
  • OK /preload/preload-xhr.html (#39092)
    • FAIL [expected PASS] subtest: Make an XHR request immediately after creating link rel=preload.

      assert_equals: resources/dummy.xml?token=47501a60-0261-4279-a092-ac344fef01b9 expected 1 but got 0
      

  • CRASH [expected ERROR] /trusted-types/SharedWorker-importScripts.html
  • CRASH [expected OK] /trusted-types/block-string-assignment-to-DedicatedWorker-setTimeout-setInterval.html
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • PASS [expected TIMEOUT] subtest: Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.
    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in enforcing mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in report-only mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

  • TIMEOUT [expected OK] /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • TIMEOUT [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls w/ default policy in report-only mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls in enforcing mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.
  • TIMEOUT /trusted-types/trusted-types-navigation.html?31-35 (#38034)
    • TIMEOUT [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected TIMEOUT] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.
  • OK /webdriver/tests/classic/element_send_keys/file_upload.py
    • FAIL [expected PASS] subtest: test_empty_text

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/find_elements_from_element/user_prompts.py
    • FAIL [expected PASS] subtest: test_accept[alert-None]

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/get_element_attribute/user_prompts.py
    • FAIL [expected PASS] subtest: test_accept[alert-None]

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

Stable unexpected results that are known to be intermittent (20)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.html (#38895)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.worker.html (#38971)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() =&gt; {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() =&gt; {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • FAIL [expected PASS] /_mozilla/mozilla/sslfail.html (#10760)
  • TIMEOUT [expected OK] /_mozilla/mozilla/window_resize_event.html (#36741)
    • TIMEOUT [expected PASS] subtest: Popup onresize event fires after resizeTo

      Test timed out
      

  • OK /content-security-policy/frame-ancestors/frame-ancestors-path-ignored.window.html (#36468)
    • FAIL [expected PASS] subtest: A 'frame-ancestors' CSP directive with a URL that includes a path should be ignored.

      assert_unreached: The IFrame should have been blocked (or cross-origin). It wasn't. Reached unreachable code
      

  • TIMEOUT [expected OK] /credential-management/credentialscontainer-frame-basics.https.html (#39430)
    • TIMEOUT [expected FAIL] subtest: navigator.credentials should be undefined in documents generated from data: URLs.

      Test timed out
      

  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-mode
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Cross-site

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • FAIL [expected PASS] subtest: aElement.click() before the load event must NOT replace

      assert_equals: expected "http://web-platform.test:8000/common/blank.html?thereplacement" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/resources/code-injector.html?pipe=sub(none)&amp;code=%0A%20%20%20%20const%20a%20%3D%20document.createElement(%22a%22)%3B%0A%20%20%20%20a.href%20%3D%20%22%2Fcommon%2Fblank.html%3Fthereplacement%22%3B%0A%20%20%20%20document.currentScript.before(a)%3B%0A%20%20%20%20a.click()%3B%0A%20%20"
      

  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected NOTRUN] subtest: Area element should support autofocus

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "appendChild", w.document.querySelector(...) is null"
      

  • OK /html/semantics/embedded-content/media-elements/media_fragment_seek.html (#24114)
    • PASS [expected FAIL] subtest: Video should seek to time specified in media fragment syntax
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domComplete &gt; Original domComplete
    • FAIL [expected PASS] subtest: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd

      assert_true: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd expected true got false
      

    • PASS [expected FAIL] subtest: Reload loadEventEnd &gt; Original loadEventEnd
    • PASS [expected FAIL] subtest: Reload loadEventStart &gt; Original loadEventStart
  • OK /preload/preload-invalid-resources.html (#39091)
    • PASS [expected FAIL] subtest: Preloading an invalid image (missing) should preload and not re-fetch
  • ERROR [expected OK] /webxr/render_state_update.https.html (#27535)

@github-actions
Copy link
Copy Markdown

✨ Try run (#20235509924) succeeded.

@mrobinson
Copy link
Copy Markdown
Member

I agree with @jdm's original comment: #41138 (comment), I think.

It may be that garbage collection should be less aggressive, but maybe doing less garbage collection here is hiding a deeper correctness issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-awaiting-review There is new code that needs to be reviewed.

Projects

None yet

3 participants