css2.1/20110323/replaced-intrinsic-ratio-001.htm is a flakey text failure on wk2 EWS and iOS. HISTORY URL: https://results.webkit.org/?suite=layout-tests&test=css2.1%2F20110323%2Freplaced-intrinsic-ratio-001.htm EWS URL: https://ews-build.webkit.org/#/builders/51/builds/10475 TEXT DIFF: RenderSVGPath {path} at (26,8) size 124x28 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] RenderBlock {P} at (1,337) size 240x16 RenderEmbeddedObject {OBJECT} at (16,0) size 208x76 [bgcolor=#FF0000] [border: (16px solid #0000FF)] - layer at (0,0) size 176x44 - RenderView at (0,0) size 176x44 - layer at (0,0) size 176x44 - RenderSVGRoot {svg} at (0,0) size 176x44 - RenderSVGRect {rect} at (0,0) size 176x44 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] - RenderSVGPath {path} at (26,8) size 124x28 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] + layer at (0,0) size 300x150 + RenderView at (0,0) size 300x150 + layer at (0,0) size 300x150 + RenderSVGRoot {svg} at (0,0) size 300x77 + RenderSVGRect {rect} at (0,0) size 300x77 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] + RenderSVGPath {path} at (45,15) size 210x45 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] RenderTable at (1,449) size 240x79 RenderTableSection (anonymous) at (0,0) size 240x79 RenderTableRow (anonymous) at (0,0) size 240x79 RenderTableCell {P} at (0,0) size 240x79 [r=0 c=0 rs=1 cs=1] RenderEmbeddedObject {OBJECT} at (16,0) size 208x76 [bgcolor=#FF0000] [border: (16px solid #0000FF)] - layer at (0,0) size 176x44 - RenderView at (0,0) size 176x44 - layer at (0,0) size 176x44 - RenderSVGRoot {svg} at (0,0) size 176x44 - RenderSVGRect {rect} at (0,0) size 176x44 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] - RenderSVGPath {path} at (26,8) size 124x28 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] + layer at (0,0) size 300x150 + RenderView at (0,0) size 300x150 + layer at (0,0) size 300x150 + RenderSVGRoot {svg} at (0,0) size 300x77 + RenderSVGRect {rect} at (0,0) size 300x77 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] + RenderSVGPath {path} at (45,15) size 210x45 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] RenderTable {TABLE} at (1,624) size 240x79 RenderTableSection {TBODY} at (0,0) size 240x79 RenderTableRow {TR} at (0,0) size 240x79 RenderTableCell {TD} at (0,0) size 240x79 [r=0 c=0 rs=1 cs=1] RenderEmbeddedObject {OBJECT} at (16,0) size 208x76 [bgcolor=#FF0000] [border: (16px solid #0000FF)] - layer at (0,0) size 176x44 - RenderView at (0,0) size 176x44 - layer at (0,0) size 176x44 - RenderSVGRoot {svg} at (0,0) size 176x44 - RenderSVGRect {rect} at (0,0) size 176x44 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] - RenderSVGPath {path} at (26,8) size 124x28 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] + layer at (0,0) size 300x150 + RenderView at (0,0) size 300x150 + layer at (0,0) size 300x150 + RenderSVGRoot {svg} at (0,0) size 300x77 + RenderSVGRect {rect} at (0,0) size 300x77 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] + RenderSVGPath {path} at (45,15) size 210x45 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] RenderBlock (floating) {P} at (1,799) size 240x16 RenderEmbeddedObject {OBJECT} at (16,0) size 208x76 [bgcolor=#FF0000] [border: (16px solid #0000FF)] - layer at (0,0) size 176x44 - RenderView at (0,0) size 176x44 - layer at (0,0) size 176x44 - RenderSVGRoot {svg} at (0,0) size 176x44 - RenderSVGRect {rect} at (0,0) size 176x44 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] - RenderSVGPath {path} at (26,8) size 124x28 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] + layer at (0,0) size 300x150 + RenderView at (0,0) size 300x150 + layer at (0,0) size 300x150 + RenderSVGRoot {svg} at (0,0) size 300x77 + RenderSVGRect {rect} at (0,0) size 300x77 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] + RenderSVGPath {path} at (45,15) size 210x45 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"]
<rdar://problem/76158718>
Was able to reproduce the failure at iOS 14 Simulator Release ToT using the following test: run-webkit-tests --ios-simulator --iterations 1000 -f css2.1/20110323/replaced-intrinsic-ratio-001.htm The test is flakey, and I can't bisect to a specific regression point because there are a lot of revisions that did not get built that I would need in order narrow down where it started. The first failure occurred at r275303. The closest available build to that was r275285, and when I tested on that build, I could not reproduce the failure.. I suspect a change was introduced somewhere between r275303 and r275285 that caused the test to start flakey failing, but I'm not sure which one.
Updated test expectations here to Pass Failure: https://trac.webkit.org/changeset/275435/webkit
This test doesn't appear to have any potentially flaky content like timers, so this has to be a layout stability regression.
This bug is similar to bug 208577 and bug 206254 where some elements in the page reference an external SVG image. In some case, the layout and the rendering of this SVG image is racy such that it gets laid out and rendered using the inline replaced box default size which is 300x150.
Created attachment 429212 [details] Patch
Created attachment 429214 [details] Patch
Comment on attachment 429214 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=429214&action=review > LayoutTests/css2.1/20110323/replaced-intrinsic-ratio-001.htm:49 > + if (window.testRunner) > + testRunner.waitUntilDone(); > + window.addEventListener('load', () => { > + document.body.offsetHeight; > + if (window.testRunner) > + testRunner.notifyDone(); > + }); I would expect this to be a no-op, but perhaps there's a reason it isn't. WTR waits for the load event before it finishes the test, and it forces a layout before dumping the results. So what does this trigger that doesn't already happen?
Comment on attachment 429214 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=429214&action=review > LayoutTests/ChangeLog:9 > + Sometimes there is a race between the layout and the rendering of the SVG Is this race correct behavior, or a WebKit bug? As Simon said, it is not super clear why the fix changes the behavior.