Closed Bug 1521205 Opened 5 years ago Closed 5 years ago

Freezing in content/hang in chrome when visiting Humble Bundle "Double Fine Presents"

Categories

(Core :: Graphics: WebRender, defect, P2)

defect

Tracking

()

VERIFIED FIXED
mozilla66
Tracking Status
firefox-esr60 --- unaffected
firefox64 --- unaffected
firefox65 --- unaffected
firefox66 --- verified

People

(Reporter: yoasif, Assigned: sotaro)

References

()

Details

(Keywords: nightly-community, regression)

Attachments

(1 file, 1 obsolete file)

Visit https://www.humblebundle.com/games/double-fine-presents

What happens: Freezing of page, non-responsive chrome. Browser eventually freezes and OS asks to force quit.

See screencast.

12:29.47 INFO: No more inbound revisions, bisection finished.
12:29.47 INFO: Last good revision: fd6b8be34aed51a18d91261abeb586bbbf350e50
12:29.47 INFO: First bad revision: d1b5339852740fc2e559b66668204fc9202daf15
12:29.47 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=fd6b8be34aed51a18d91261abeb586bbbf350e50&tochange=d1b5339852740fc2e559b66668204fc9202daf15

Blocks: 1508522
Has Regression Range: --- → yes
Has STR: --- → yes
Attached video freezing-hang-WR.webm
Keywords: regression
See Also: → 1517940

Sotaro, might be related to the change in the pushlog above?

Flags: needinfo?(sotaro.ikeda.g)
Priority: -- → P2
Assignee: nobody → sotaro.ikeda.g

I confirmed the same regression range as in comment 0.

https://perfht.ml/2FASkl2 is a profile before freeze. Majority of time was spent in PrimitiveStore::update_visibility()

Visual Studio Concurrency Visualizer also showed high cpu usage in PrimitiveStore::update_visibility(). Somehow PrimitiveStore::update_visibility() took very very long time.

Flags: needinfo?(sotaro.ikeda.g)

"for y in p0.y .. p1.y {}" in TileCache::update_prim_dependencies() actually took long time. Iteration was huge since world_rect was very large.

https://searchfox.org/mozilla-central/rev/32d853b479cc0224d67693f0e33e9d924a33c078/gfx/wr/webrender/src/picture.rs#474

Then when picture caching was disabled, I did not saw the hang.

Frame size became too big, we need to add a size limit to nsDisplayTransform::ShouldPrerenderTransformedContent() for webrender.

Huh, this is very unexpected. That loop should in theory only cover a small amount of tiles, regardless of the size of the incoming content? I can take a look at this on Monday - thanks for looking into it so far!

Thanks!

Anyway, it seems necessary to limit frame size of async animation.

Sotaro, I opened https://bugzilla.mozilla.org/show_bug.cgi?id=1521329 which has a bug fix in picture caching for this problem. With the change, the picture caching code is not affected by the size of the primitive dimensions.

Thanks! I confirmed that the problem was addressed :)

Attachment #9037755 - Attachment is obsolete: true

This now works for me.

Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED

I have managed to reproduce the issue using Fx 66.0a1 buildID: 20190119215456 on Ubuntu 16.04 x64.

The issue is verified fixed using Fx66.0b13 on macOS 10.14, Windows 10 x64 and Ubuntu 16.04.
Please note that the bundle used for the bug submission was no longer available, so another bundle link was used to successfully reproduce the issue and confirm its fix. (here is the link of the bundle)

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: