Closed Bug 1619245 Opened 4 years ago Closed 4 years ago

Background animation get stuck

Categories

(Core :: CSS Parsing and Computation, defect, P2)

75 Branch
defect

Tracking

()

VERIFIED FIXED
mozilla75
Tracking Status
firefox-esr68 --- unaffected
firefox73 --- unaffected
firefox74 --- verified
firefox75 --- verified

People

(Reporter: ailea, Assigned: emilio)

References

(Regression, )

Details

(Keywords: regression)

Attachments

(3 files)

Affected versions:

Beta 74.0b9, Nightly 75.0a1 (2020-03-01)

Affected platforms:

Mac OS 10.15, Windows 10.

Steps:

  1. Launch Firefox with a new profile access: https://fauux.neocities.org/Love.html

Actual result:

The background animation stuck in the middle of the screen, around the character.

Expected result:

The background animation should flow normally.

Please see the video attachment for a better understanding.

Regression range:

https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=fa233e2c081b14a5589f65e72769a259e0ad4fad&tochange=e3382fdd4f543e1177ba3b0f080d90905cdeb22f

Flags: needinfo?(emilio)
Assignee: nobody → emilio

On some RDL situations we may create the new item, then destroy the old one
afterwards.

When this is the order of operations, the image would end up unregistered, and
thus not invalidating the canvas frame.

Flags: needinfo?(emilio)
Pushed by ealvarez@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/4c6c850d0fa1
Associate image to display item at paint time rather than at construction time. r=tnikkel

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&group_state=expanded&selectedJob=291321510&resultStatus=testfailed%2Cbusted%2Cexception&revision=4c6c850d0fa11940beed62128f9cbec389e35707&searchStr=%28bc\

Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=291321510&repo=autoland

Backout link: https://hg.mozilla.org/integration/autoland/rev/400ddc73d12d18bacb7ab9e6e6fd36468e5b5d10

[task 2020-03-02T20:28:07.421Z] 20:28:07     INFO - GECKO(2231) | Assertion failure: mFrame->IsCanvasFrame() || mFrame->IsTableCellFrame(), at /builds/worker/workspace/build/src/layout/painting/nsDisplayList.cpp:4677
[task 2020-03-02T20:28:28.620Z] 20:28:28     INFO - GECKO(2231) | #01: nsDisplayBackgroundImage::PaintInternal(nsDisplayListBuilder*, gfxContext*, nsRect const&, nsRect*) [layout/painting/nsDisplayList.cpp:4697]
[task 2020-03-02T20:28:28.620Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.621Z] 20:28:28     INFO - GECKO(2231) | #02: mozilla::FrameLayerBuilder::PaintItems(std::vector<mozilla::AssignedDisplayItem, std::allocator<mozilla::AssignedDisplayItem> >&, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, gfxContext*, nsDisplayListBuilder*, nsPresContext*, mozilla::gfx::IntPointTyped<mozilla::gfx::UnknownUnits> const&, float, float) [layout/painting/FrameLayerBuilder.cpp:7122]
[task 2020-03-02T20:28:28.621Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.622Z] 20:28:28     INFO - GECKO(2231) | #03: mozilla::FrameLayerBuilder::DrawPaintedLayer(mozilla::layers::PaintedLayer*, gfxContext*, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layers::DrawRegionClip, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, void*) [layout/painting/FrameLayerBuilder.cpp:7285]
[task 2020-03-02T20:28:28.623Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.623Z] 20:28:28     INFO - GECKO(2231) | #04: mozilla::layers::ClientPaintedLayer::RenderLayerWithReadback(mozilla::layers::ReadbackProcessor*) [gfx/layers/client/ClientPaintedLayer.cpp:166]
[task 2020-03-02T20:28:28.623Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.624Z] 20:28:28     INFO - GECKO(2231) | #05: mozilla::layers::ClientContainerLayer::RenderLayer() [gfx/layers/client/ClientContainerLayer.h:128]
[task 2020-03-02T20:28:28.624Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.625Z] 20:28:28     INFO - GECKO(2231) | #06: mozilla::layers::ClientContainerLayer::RenderLayer() [gfx/layers/client/ClientContainerLayer.h:128]
[task 2020-03-02T20:28:28.625Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.625Z] 20:28:28     INFO - GECKO(2231) | #07: mozilla::layers::ClientContainerLayer::RenderLayer() [gfx/layers/client/ClientContainerLayer.h:128]
[task 2020-03-02T20:28:28.626Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.626Z] 20:28:28     INFO - GECKO(2231) | #08: mozilla::layers::ClientLayerManager::EndTransactionInternal(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layers::DrawRegionClip, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags) [gfx/layers/client/ClientLayerManager.cpp:360]
[task 2020-03-02T20:28:28.626Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.626Z] 20:28:28     INFO - GECKO(2231) | #09: mozilla::layers::ClientLayerManager::EndTransaction(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layers::DrawRegionClip, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags) [gfx/layers/client/ClientLayerManager.cpp:416]
[task 2020-03-02T20:28:28.627Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.627Z] 20:28:28     INFO - GECKO(2231) | #10: nsDisplayList::PaintRoot(nsDisplayListBuilder*, gfxContext*, unsigned int) [layout/painting/nsDisplayList.cpp:3128]
[task 2020-03-02T20:28:28.627Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.628Z] 20:28:28     INFO - GECKO(2231) | #11: nsLayoutUtils::PaintFrame(gfxContext*, nsIFrame*, nsRegion const&, unsigned int, nsDisplayListBuilderMode, nsLayoutUtils::PaintFrameFlags) [layout/base/nsLayoutUtils.cpp:4095]
[task 2020-03-02T20:28:28.628Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.628Z] 20:28:28     INFO - GECKO(2231) | #12: mozilla::PresShell::Paint(nsView*, nsRegion const&, mozilla::PaintFlags) [layout/base/PresShell.cpp:6068]
[task 2020-03-02T20:28:28.628Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.629Z] 20:28:28     INFO - GECKO(2231) | #13: nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*) [gfx/src/nsRegion.h:479]
[task 2020-03-02T20:28:28.629Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.630Z] 20:28:28     INFO - GECKO(2231) | #14: nsViewManager::ProcessPendingUpdatesForView(nsView*, bool) [mfbt/RefPtr.h:80]
[task 2020-03-02T20:28:28.630Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.630Z] 20:28:28     INFO - GECKO(2231) | #15: nsViewManager::ProcessPendingUpdates() [view/nsViewManager.cpp:1020]
[task 2020-03-02T20:28:28.630Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.631Z] 20:28:28     INFO - GECKO(2231) | #16: nsRefreshDriver::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [layout/base/nsRefreshDriver.cpp:2187]
[task 2020-03-02T20:28:28.631Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.631Z] 20:28:28     INFO - GECKO(2231) | #17: mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) [layout/base/nsRefreshDriver.cpp:345]
[task 2020-03-02T20:28:28.631Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.632Z] 20:28:28     INFO - GECKO(2231) | #18: mozilla::RefreshDriverTimer::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [layout/base/nsRefreshDriver.cpp:370]
[task 2020-03-02T20:28:28.632Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.632Z] 20:28:28     INFO - GECKO(2231) | #19: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [layout/base/nsRefreshDriver.cpp:745]
[task 2020-03-02T20:28:28.633Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.633Z] 20:28:28     INFO - GECKO(2231) | #20: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::VsyncEvent const&) [layout/base/nsRefreshDriver.cpp:643]
[task 2020-03-02T20:28:28.634Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.634Z] 20:28:28     INFO - GECKO(2231) | #21: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyParentProcessVsync() [layout/base/nsRefreshDriver.cpp:563]
[task 2020-03-02T20:28:28.634Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.635Z] 20:28:28     INFO - GECKO(2231) | #22: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::ParentProcessVsyncNotifier::Run() [layout/base/nsRefreshDriver.cpp:537]
[task 2020-03-02T20:28:28.635Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.636Z] 20:28:28     INFO - GECKO(2231) | #23: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1220]
[task 2020-03-02T20:28:28.636Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.636Z] 20:28:28     INFO - GECKO(2231) | #24: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:481]
[task 2020-03-02T20:28:28.636Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.637Z] 20:28:28     INFO - GECKO(2231) | #25: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:87]
[task 2020-03-02T20:28:28.637Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.637Z] 20:28:28     INFO - GECKO(2231) | #26: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:315]
[task 2020-03-02T20:28:28.638Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.638Z] 20:28:28     INFO - GECKO(2231) | #27: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:291]
[task 2020-03-02T20:28:28.638Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.638Z] 20:28:28     INFO - GECKO(2231) | #28: nsBaseAppShell::Run() [widget/nsBaseAppShell.cpp:139]
[task 2020-03-02T20:28:28.638Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.639Z] 20:28:28     INFO - GECKO(2231) | #29: nsAppStartup::Run() [toolkit/components/startup/nsAppStartup.cpp:272]
[task 2020-03-02T20:28:28.639Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.640Z] 20:28:28     INFO - GECKO(2231) | #30: XREMain::XRE_mainRun() [toolkit/xre/nsAppRunner.cpp:4555]
[task 2020-03-02T20:28:28.640Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.640Z] 20:28:28     INFO - GECKO(2231) | #31: XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) [toolkit/xre/nsAppRunner.cpp:4690]
[task 2020-03-02T20:28:28.641Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.641Z] 20:28:28     INFO - GECKO(2231) | #32: XRE_main(int, char**, mozilla::BootstrapConfig const&) [toolkit/xre/nsAppRunner.cpp:4741]
[task 2020-03-02T20:28:28.642Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.642Z] 20:28:28     INFO - GECKO(2231) | #33: _fini
[task 2020-03-02T20:28:28.643Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.643Z] 20:28:28     INFO - GECKO(2231) | #34: libc.so.6 + 0x21b97
[task 2020-03-02T20:28:28.643Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.644Z] 20:28:28     INFO - GECKO(2231) | #35: _fini
[task 2020-03-02T20:28:28.644Z] 20:28:28     INFO - 
[task 2020-03-02T20:28:28.645Z] 20:28:28     INFO - GECKO(2231) | [Child 3401, Main Thread] WARNING: No CID found when attempting to map contract ID: file /builds/worker/workspace/build/src/xpcom/components/nsComponentManager.cpp, line 721
[task 2020-03-02T20:28:28.645Z] 20:28:28     INFO - GECKO(2231) | ExceptionHandler::GenerateDump cloned child 3412
[task 2020-03-02T20:28:28.645Z] 20:28:28     INFO - GECKO(2231) | ExceptionHandler::SendContinueSignalToChild sent continue signal to child
[task 2020-03-02T20:28:28.646Z] 20:28:28     INFO - GECKO(2231) | ExceptionHandler::WaitForContinueSignal waiting for continue signal...
[task 2020-03-02T20:28:28.646Z] 20:28:28     INFO - GECKO(2231) | [Child 3371: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 2 (0x7fbffd193520) [pid = 3371] [serial = 1] [outer = (nil)] [url = http://127.0.0.1:8888/browser/browser/base/content/test/plugins/browser_clearplugindata_noage.html]
[task 2020-03-02T20:28:28.647Z] 20:28:28     INFO - GECKO(2231) | [Child 3371: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 1 (0x7fbfe2116c00) [pid = 3371] [serial = 3] [outer = (nil)] [url = http://127.0.0.1:8888/browser/browser/base/content/test/plugins/browser_clearplugindata_noage.html]
[task 2020-03-02T20:28:28.647Z] 20:28:28     INFO - GECKO(2231) | [Child 3371: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 0 (0x7fbfe2a69400) [pid = 3371] [serial = 2] [outer = (nil)] [url = about:blank]
[task 2020-03-02T20:28:28.648Z] 20:28:28     INFO - GECKO(2231) | [Child 3371, Main Thread] WARNING: Extra shutdown CC: 'i < NORMAL_SHUTDOWN_COLLECTIONS', file /builds/worker/workspace/build/src/xpcom/base/nsCycleCollector.cpp, line 3352
[task 2020-03-02T20:28:28.649Z] 20:28:28     INFO - GECKO(2231) | Couldn't convert chrome URL: chrome://branding/locale/brand.properties
[task 2020-03-02T20:28:28.649Z] 20:28:28     INFO - GECKO(2231) | [Child 3401, Main Thread] WARNING: Could not get the program name for a cubeb stream.: 'NS_SUCCEEDED(rv)', file /builds/worker/workspace/build/src/dom/media/CubebUtils.cpp, line 363
[task 2020-03-02T20:28:28.650Z] 20:28:28     INFO - GECKO(2231) | nsStringStats
Flags: needinfo?(emilio)
Flags: needinfo?(emilio)
Pushed by ealvarez@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/079f4b05ead2
Associate image to display item at paint time rather than at construction time. r=tnikkel

Pascal, this bug affects 74, are you fine with uplifting this patch to 74 now?

Flags: needinfo?(pascalc)
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla75

(In reply to Ethan Tseng [:ethan] from comment #6)

Pascal, this bug affects 74, are you fine with uplifting this patch to 74 now?

The bug has no priority set so I lack context to determine if this is a significant regression, is that a source of significant breakage/webcompat issue or can we live a cycle with this bug? Thanks

Flags: needinfo?(pascalc) → needinfo?(emilio)

Comment on attachment 9130228 [details]
Bug 1619245 - Associate image to display item at paint time rather than at construction time. r=tnikkel

Beta/Release Uplift Approval Request

  • User impact if declined: Some sites with animated images in the root would fail to animate in some circumstances.
  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: Yes
  • If yes, steps to reproduce: comment 0
  • List of other uplifts needed: none
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Very minor change.
  • String changes made/needed: none
Flags: needinfo?(emilio)
Attachment #9130228 - Flags: approval-mozilla-beta?
Flags: qe-verify+

Sorry, I should've set the priority and such first. I thought it was too late for uplifts already... I think it's not an extremely common case, but it's a very low risk patch and it'd be nice to not break it on release if we can avoid it.

So I don't think it's an absolute blocker, as I don't think gifs as the background of the root element is very common, and this needs a subset of conditions for that to happen, but still it's something that has worked since forever.

Priority: -- → P2

Verified - Fixed in latest Nightly build 75.0a1 (build id: 20200303095030) using Windows 10 and Mac OS 10.15

Comment on attachment 9130228 [details]
Bug 1619245 - Associate image to display item at paint time rather than at construction time. r=tnikkel

The fix is low risk, has tests and QA verified in nightly. The broken feature is a long supported one, uplift approved for RC2 thanks.

Attachment #9130228 - Flags: approval-mozilla-beta? → approval-mozilla-release+

Verified - Fixed in 74 RC2 (Build id: 20200303203900) using Windows 10 and Mac OS 10.15.

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

Attachment

General

Created:
Updated:
Size: