Update webrender to a54cc729259588dd1ff52c86d0c62cb2a1767137

RESOLVED FIXED in Firefox 55



2 years ago
2 years ago


(Reporter: kats, Assigned: kats)


(Blocks 1 bug)

55 Branch
Dependency tree / graph

Firefox Tracking Flags

(firefox55 fixed)


(Whiteboard: [gfx-noted])


(6 attachments)

+++ This bug was initially created as a clone of Bug #1365934 +++

I'm filing this as a placeholder bug for the next webrender update. I may be running a cron script [1] that does try pushes with webrender update attempts, so that we can track build/test breakages introduced by webrender on a rolling basis. This bug will hold the try push links as well as dependencies filed for those breakages, so that we have a better idea going into the update of what needs fixing. I might abort the cron job because once things get too far out of sync it's hard to fully automate fixing all the breakages.

When we are ready to actually land the update, we can rename this bug and use it for the update, and then file a new bug for the next "future update".

[1] https://github.com/staktrace/moz-scripts/blob/master/try-latest-webrender.sh
WR @ 9cc838b719508c9a8107ade3ea04edd6e621e4d1


Reftests are green, but a bunch of other stuff is blue. This might just be random, or it might be memory leaking. I've seen this before in the past with memory leaks so I'll try and see what's going on here.
Oh, this would be the regression range, if it is a regression. 847b01c sounds like it might potentially cause this.

*   9cc838b Auto merge of #1293 - Gankro:curves-are-slow, r=glennw
| * ad7ba17 fix shader to handle degenerate border curves
| * 9d93da0 add a reftest for degenerate curves
| * 0d0423a don't take rectangular border fast path for curved borders
* 756fc0f Auto merge of #1294 - glennw:cache-expiry, r=kvark
* 847b01c Hold old resources in the texture cache for a bit longer.
Just an update: it turned out 847b01c (servo/webrender#1294) was in fact the cause of this. There is some discussion on the issue and kvark and I were trying to figure out what's going on. Adding a call to deinit() the renderer before we destroy it in wr_renderer_delete didn't help, but reducing the cache expiry delay from 600 frames to 60 frames did help.
WR @ efa87af6de7b3ffb27812adbcfd34632a039aa7c


In addition to the blue OOMs from before, there are R4 failures and debug crashtest failures.

The regression range for both is:

*   efa87af Auto merge of #1292 - kvark:snap, r=glennw
| * d4235d4 Snapping ref tests
| * f6728aa Snapping transformed primitives
| * 0a6626b Full rectangular pixel snapping
* 150da47 Auto merge of #1296 - mephisto41:ensure-numbers-arent-nan-or-infinite, r=kvark
* 517c172 Ensure the result of calculation is finite number.

The R4 failure is an increase in fuzziness in an already-fuzzy test (layout/reftests/columns/column-balancing-overflow-005.html). I think this is the third or fourth time the fuzziness has increased, which is kinda concerning.

The crashtest failure is a panic in webrender with this (partial) stack:

 9  libxul.so!core::panicking::panic [panicking.rs : 49 + 0x18]
10  libxul.so!webrender::util::TransformedRect::new [util.rs:a473093e7078 : 266 + 0xc]
11  libxul.so!webrender::mask_cache::Geometry::update [mask_cache.rs:a473093e7078 : 95 + 0xb]
12  libxul.so!webrender::mask_cache::MaskCacheInfo::update [mask_cache.rs:a473093e7078 : 310 + 0xd]
13  libxul.so!webrender::frame_builder::LayerRectCalculationAndCullingPass::recalculate_clip_scroll_nodes [frame_builder.rs:a473093e7078 : 1583 + 0x11]
14  libxul.so!webrender::frame_builder::LayerRectCalculationAndCullingPass::run [frame_builder.rs:a473093e7078 : 1530 + 0x8]
15  libxul.so!webrender::frame_builder::LayerRectCalculationAndCullingPass::create_and_run [frame_builder.rs:a473093e7078 : 1525 + 0x8]
16  libxul.so!webrender::frame_builder::FrameBuilder::build [frame_builder.rs:a473093e7078 : 1406 + 0x27]
17  libxul.so!webrender::frame::{{impl}}::build_frame::{{closure}} [frame.rs:a473093e7078 : 995 + 0x12]
18  libxul.so!core::option::Option<&mut webrender::frame_builder::FrameBuilder>::map<&mut webrender::frame_builder::FrameBuilder,webrender::tiling::Frame,closure> [option.rs : 383 + 0x2e]
19  libxul.so!webrender::frame::Frame::build_frame [frame.rs:a473093e7078 : 994 + 0x58]
20  libxul.so!webrender::frame::Frame::build [frame.rs:a473093e7078 : 977 + 0x16]
21  libxul.so!webrender::render_backend::RenderBackend::render [render_backend.rs:a473093e7078 : 491 + 0x13]
22  libxul.so!webrender::render_backend::{{impl}}::run::{{closure}} [render_backend.rs:a473093e7078 : 412 + 0xb]
23  libxul.so!webrender::profiler::TimeProfileCounter::profile<webrender::internal_types::RendererFrame,closure> [profiler.rs:a473093e7078 : 154 + 0x18]
24  libxul.so!webrender::render_backend::RenderBackend::run [render_backend.rs:a473093e7078 : 411 + 0x2f]

Given this is happening in TransformedRect::new, it is likely a result of cset f6728aa, from servo/webrender#1292.
WR @ efa87af6de7b3ffb27812adbcfd34632a039aa7c, with the R4 failure fuzzed out


Nothing new - same blue OOMs and crashtest failure.
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #4)
> Given this is happening in TransformedRect::new, it is likely a result of
> cset f6728aa, from servo/webrender#1292.

This is wrong, I bisected and confirmed that the crash is a result of servo/webrender#1296 (i.e. from cset 517c172).
And the column-balancing-overflow-005.html regression is indeed from servo/webrender#1292.
servo/webrender#1302 should have the fix for the crashtest failure.
WR @ 3122c704ad9f16bfb01e35b96a1b11f05a6b27bf


crashtest is fixed now, only remaining problem is the blue/OOM jobs.
Bustage for a number of reasons. First thing I ran into was euclid mismatches. webrender_bindings needs to be updated to use a newer euclid, and we also need to use a newer plane-split version so that it doesn't pull in an older euclid. I filed https://github.com/servo/webrender/pull/1315 to fix that properly upstream.
Second thing was the changes to push_yuv_image. That seems relatively straightforward to fix with a bit of plumbing to pass the WrImageRendering parameter through.
Here's a try push with WR @ ef61168bce1301f67c750ceafede22fff287d563 with the bustage fixes and the OOM fix (fingers crossed)

WR @ a54cc729259588dd1ff52c86d0c62cb2a1767137, includes the upstreamed PR servo/webrender#1315 and the rest of the fixes


Green, let's get this landed.
Assignee: nobody → bugmail
Summary: Future webrender update bug → Update webrender to a54cc729259588dd1ff52c86d0c62cb2a1767137
Version: unspecified → 55 Branch
Comment hidden (mozreview-request)

Comment 22

2 years ago
Comment on attachment 8873149 [details]
Bug 1367734 - Update webrender to cset a54cc729259588dd1ff52c86d0c62cb2a1767137.

Attachment #8873149 - Flags: review?(jmuizelaar) → review+

Comment 23

2 years ago
Comment on attachment 8873152 [details]
Bug 1367734 - Increase fuzz on a reftest due to changes in servo/webrender#1292.

Attachment #8873152 - Flags: review?(jmuizelaar) → review+

Comment 24

2 years ago
Comment on attachment 8873151 [details]
Bug 1367734 - Revendor third-party rust packages.

Attachment #8873151 - Flags: review?(jmuizelaar) → review+

Comment 25

2 years ago
Comment on attachment 8873150 [details]
Bug 1367734 - Update Cargo.toml/Cargo.lock files for version bumps.

Attachment #8873150 - Flags: review?(jmuizelaar) → review+

Comment 26

2 years ago
Comment on attachment 8873154 [details]
Bug 1367734 - Tone down webrender's memory usage to avoid OOMing during media mochitests.


Attachment #8873154 - Flags: review?(kvark) → review+
Comment hidden (mozreview-request)
Comment hidden (mozreview-request)
Comment hidden (mozreview-request)
Comment hidden (mozreview-request)
Comment hidden (mozreview-request)
Comment hidden (mozreview-request)
Updated patches to pick up plane-split 0.4.1 (instead of 0.4.0) because of kvark/plane-split#3

Not that it should affect anything but new try push just to be safe: https://treeherder.mozilla.org/#/jobs?repo=try&revision=cc9fb105b075a1c8f4fe4c0621bdf09f8124cb32

Comment 34

2 years ago
Comment on attachment 8873153 [details]
Bug 1367734 - Update for push_yuv_image API change in WR cset a4b9e25.

Attachment #8873153 - Flags: review?(hshih) → review+

Comment 35

2 years ago
Pushed by kgupta@mozilla.com:
Update webrender to cset a54cc729259588dd1ff52c86d0c62cb2a1767137. r=jrmuizel,jerry
Increase fuzz on a reftest due to changes in servo/webrender#1292. r=jrmuizel
Tone down webrender's memory usage to avoid OOMing during media mochitests. r=kvark

Comment 36

2 years ago
Last Resolved: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
This code update requires rustc 1.17, but configure is still happy with 1.15.1.
Depends on: 1369615
You need to log in before you can comment on or make changes to this bug.