Title: [248945] trunk/Source/WebCore
Revision
248945
Author
an...@apple.com
Date
2019-08-21 10:05:46 -0700 (Wed, 21 Aug 2019)

Log Message

ASSERTION FAILED: !s_isInvalidatingStyleWithRuleSets in com.apple.WebCore: WebCore::DocumentRuleSets::collectFeatures const
https://bugs.webkit.org/show_bug.cgi?id=200919
<rdar://problem/53413013>

Reviewed by Zalan Bujtas.

Bots show that in some timing-dependent cases we may end up constructing a style resolver in the middle the class change invalidation.

This happens flakily on Pad bots in

media/track/track-node-add-remove.html
media/W3C/video/events/event_loadstart_manual.html
media/W3C/video/readyState/readyState_initial.html

and also reproes locally with lots of runs over these tests.

* style/StyleInvalidationFunctions.h:
(WebCore::Style::traverseRuleFeatures):

Ensure that for elements in shadow tree the host resolver is also always constructed before starting rule-based invalidation.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (248944 => 248945)


--- trunk/Source/WebCore/ChangeLog	2019-08-21 16:52:45 UTC (rev 248944)
+++ trunk/Source/WebCore/ChangeLog	2019-08-21 17:05:46 UTC (rev 248945)
@@ -1,3 +1,26 @@
+2019-08-21  Antti Koivisto  <an...@apple.com>
+
+        ASSERTION FAILED: !s_isInvalidatingStyleWithRuleSets in com.apple.WebCore: WebCore::DocumentRuleSets::collectFeatures const
+        https://bugs.webkit.org/show_bug.cgi?id=200919
+        <rdar://problem/53413013>
+
+        Reviewed by Zalan Bujtas.
+
+        Bots show that in some timing-dependent cases we may end up constructing a style resolver in the middle the class change invalidation.
+
+        This happens flakily on Pad bots in
+
+        media/track/track-node-add-remove.html
+        media/W3C/video/events/event_loadstart_manual.html
+        media/W3C/video/readyState/readyState_initial.html
+
+        and also reproes locally with lots of runs over these tests.
+
+        * style/StyleInvalidationFunctions.h:
+        (WebCore::Style::traverseRuleFeatures):
+
+        Ensure that for elements in shadow tree the host resolver is also always constructed before starting rule-based invalidation.
+
 2019-08-21  Antoine Quint  <grao...@apple.com>
 
         REGRESSION: naver.com - Multiple taps are required to open email

Modified: trunk/Source/WebCore/style/StyleInvalidationFunctions.h (248944 => 248945)


--- trunk/Source/WebCore/style/StyleInvalidationFunctions.h	2019-08-21 16:52:45 UTC (rev 248944)
+++ trunk/Source/WebCore/style/StyleInvalidationFunctions.h	2019-08-21 17:05:46 UTC (rev 248945)
@@ -76,6 +76,10 @@
 
     traverseRuleFeaturesInShadowTree(element, function);
     traverseRuleFeaturesForSlotted(element, function);
+
+    // Ensure that the containing tree resolver also exists so it doesn't get created in the middle of invalidation.
+    if (element.isInShadowTree())
+        Style::Scope::forNode(*element.containingShadowRoot()->host()).resolver();
 }
 
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to