REGRESSION: animations/leak-document-with-css-animation.html is very flaky
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 18 Dec 2019 14:57:32 +0000 (14:57 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 18 Dec 2019 14:57:32 +0000 (14:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=205299

While this test has proven to be solid running in isolation, it appears that the difference of live documents
before and after the iframe has been destroyed may be more than one. In fact, in reported failures, there always
seems to be 2 live documents fewer after than before, instead of the expected single document.

Since internals.numberOfLiveDocuments() returns the number of live documents throughout the life of the
Web process, we now force garbage collection every time we query internals.numberOfLiveDocuments(). This
should ensure that documents pending destruction due to garbage collection to be destroyed before we take
a snapshort of the number of live documents.

Patch by Antoine Quint <graouts@apple.com> on 2019-12-18
Reviewed by Antti Koivisto.

* TestExpectations:
* animations/leak-document-with-css-animation.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253679 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/animations/leak-document-with-css-animation.html

index 5d2c125..398cd6b 100644 (file)
@@ -1,5 +1,24 @@
 2019-12-18  Antoine Quint  <graouts@apple.com>
 
+        REGRESSION: animations/leak-document-with-css-animation.html is very flaky
+        https://bugs.webkit.org/show_bug.cgi?id=205299
+
+        While this test has proven to be solid running in isolation, it appears that the difference of live documents
+        before and after the iframe has been destroyed may be more than one. In fact, in reported failures, there always
+        seems to be 2 live documents fewer after than before, instead of the expected single document.
+
+        Since internals.numberOfLiveDocuments() returns the number of live documents throughout the life of the
+        Web process, we now force garbage collection every time we query internals.numberOfLiveDocuments(). This
+        should ensure that documents pending destruction due to garbage collection to be destroyed before we take
+        a snapshort of the number of live documents.
+
+        Reviewed by Antti Koivisto.
+
+        * TestExpectations:
+        * animations/leak-document-with-css-animation.html:
+
+2019-12-18  Antoine Quint  <graouts@apple.com>
+
         [macOS/iOS Debug] Layout Test webanimations/animation-opacity-animation-crash.html is a flaky failure
         https://bugs.webkit.org/show_bug.cgi?id=181612
 
index 03d82dc..0ffa768 100644 (file)
@@ -3814,5 +3814,3 @@ webgl/1.0.3/conformance/renderbuffers/feedback-loop.html [ Skip ]
 webgl/1.0.3/conformance/textures/copy-tex-image-2d-formats.html [ Skip ]
 webgl/1.0.3/conformance/canvas/rapid-resizing.html [ Skip ]
 webgl/1.0.3/conformance/extensions/webgl-draw-buffers.html [ Skip ]
-
-webkit.org/b/205299 animations/leak-document-with-css-animation.html [ Pass Failure ]
index db5b3d1..05f8ff1 100644 (file)
@@ -22,18 +22,21 @@ function runTest() {
         if (frame.src === 'about:blank')
             return true;
 
-        numberOfLiveDocumentsAfterIframeLoaded = internals.numberOfLiveDocuments();
-        debug("The iframe has finished loading.");
-
-        frame.remove();
-        frame = null;
-
         gc();
         setTimeout(function () {
-            debug("The iframe has been destroyed.");
-            shouldBe("internals.numberOfLiveDocuments()", "numberOfLiveDocumentsAfterIframeLoaded - 1");
-            debug("");
-            finishJSTest();
+            numberOfLiveDocumentsAfterIframeLoaded = internals.numberOfLiveDocuments();
+            debug("The iframe has finished loading.");
+
+            frame.remove();
+            frame = null;
+
+            gc();
+            setTimeout(function () {
+                debug("The iframe has been destroyed.");
+                shouldBe("internals.numberOfLiveDocuments()", "numberOfLiveDocumentsAfterIframeLoaded - 1");
+                debug("");
+                finishJSTest();
+            });
         });
     }