Closed Bug 1541915 Opened 6 years ago Closed 5 years ago

Intermittent layout/base/tests/test_scroll_per_page.html | Test timed out.

Categories

(Core :: Layout, defect, P5)

defect

Tracking

()

RESOLVED FIXED
87 Branch
Tracking Status
firefox-esr78 --- wontfix
firefox85 --- wontfix
firefox86 --- wontfix
firefox87 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: masayuki)

References

Details

(Keywords: intermittent-failure, regression)

Attachments

(2 files, 1 obsolete file)

#[markdown(off)]
Filed by: nerli [at] mozilla.com

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

https://queue.taskcluster.net/v1/task/Ixjyx5bTRyC4Nl5FnMWOQQ/runs/0/artifacts/public/logs/live_backing.log

[task 2019-04-04T13:19:04.449Z] 13:19:04 INFO - 1557 INFO TEST-START | layout/base/tests/test_scroll_per_page.html
[task 2019-04-04T13:24:13.913Z] 13:24:13 INFO - Buffered messages logged at 13:18:42
[task 2019-04-04T13:24:13.914Z] 13:24:13 INFO - 1558 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in non-scrollable editing host: the document should be scrolled down even if user presses PageDown in the editing host got: 132, previous position: 0
[task 2019-04-04T13:24:13.914Z] 13:24:13 INFO - 1559 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in non-scrollable editing host: selection start shouldn't be moved to outside of the editing host (got: text node in div#editor)
[task 2019-04-04T13:24:13.914Z] 13:24:13 INFO - 1560 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in non-scrollable editing host: selection should be collapsed
[task 2019-04-04T13:24:13.914Z] 13:24:13 INFO - 1561 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in non-scrollable editing host: the editing host should keep having focus
[task 2019-04-04T13:24:13.914Z] 13:24:13 INFO - Buffered messages finished
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1562 INFO TEST-UNEXPECTED-FAIL | layout/base/tests/test_scroll_per_page.html | Test timed out.
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:275:18
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - reportError@SimpleTest/TestRunner.js:121:22
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - TestRunner._checkForHangs@SimpleTest/TestRunner.js:142:7
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1563 INFO TEST-OK | layout/base/tests/test_scroll_per_page.html | took 304030ms
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1564 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in non-scrollable editing host: the document should be scrolled up even if user presses PageDown in the editing host got: 54, previous position: 132
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1565 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in non-scrollable editing host: selection start shouldn't be moved to outside of the editing host (got: text node in div#editor)
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1566 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in non-scrollable editing host: selection should be collapsed
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1567 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in non-scrollable editing host: the editing host should keep having focus
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1568 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in scrollable editing host: the editor should be scrolled down even if user presses PageDown in the editing host got: 71, previous position: 0
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1569 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in scrollable editing host: selection start shouldn't be moved to outside of the editing host (got: text node in div#innerDiv)
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1570 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in scrollable editing host: selection should be collapsed
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1571 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageDown in scrollable editing host: the editing host should keep having focus
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1572 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in scrollable editing host: the editor should be scrolled up even if user presses PageDown in the editing host got: 0, previous position: 71
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1573 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in scrollable editing host: selection start shouldn't be moved to outside of the editing host (got: text node in div#innerDiv)
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1574 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in scrollable editing host: selection should be collapsed
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1575 INFO TEST-PASS | layout/base/tests/test_scroll_per_page.html | PageUp in scrollable editing host: the editing host should keep having focus
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1576 ERROR [SimpleTest.finish()] this test already called finish!
[task 2019-04-04T13:24:13.919Z] 13:24:13 INFO - 1577 INFO TEST-UNEXPECTED-ERROR | layout/base/tests/test_scroll_per_page.html | called finish() multiple times

No longer depends on: 1687898

When this occurs, I see some this warnings:

[Child 5612, Main Thread] WARNING: '!aContent->GetComposedDoc()', file /builds/worker/checkouts/gecko/layout/base/nsCSSFrameConstructor.cpp:8459

And this is caused by the following stack:

[task 2021-01-22T04:17:02.383Z] 04:17:02     INFO - GECKO(5632) | #01: mozilla::RestyleManager::DoProcessPendingRestyles(mozilla::ServoTraversalFlags) [layout/base/RestyleManager.cpp:3033]
[task 2021-01-22T04:17:02.383Z] 04:17:02     INFO - GECKO(5632) | #02: mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) [layout/base/PresShell.cpp:4209]
[task 2021-01-22T04:17:02.383Z] 04:17:02     INFO - GECKO(5632) | #03: mozilla::dom::Document::FlushPendingNotifications(mozilla::ChangesToFlush) [dom/base/Document.cpp:10351]
[task 2021-01-22T04:17:02.383Z] 04:17:02     INFO - GECKO(5632) | #04: mozilla::image::SVGDocumentWrapper::FlushImageTransformInvalidation() [image/SVGDocumentWrapper.cpp:95]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #05: mozilla::image::VectorImage::CreateSurface(mozilla::image::SVGDrawingParameters const&, gfxDrawable*, bool&) [image/VectorImage.cpp:1071]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #06: mozilla::image::VectorImage::Draw(gfxContext*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::image::ImageRegion const&, unsigned int, mozilla::gfx::SamplingFilter, mozilla::Maybe<mozilla::SVGImageContext> const&, unsigned int, float) [image/VectorImage.cpp:994]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #07: DrawImageInternal(gfxContext&, nsPresContext*, imgIContainer*, const mozilla::gfx::SamplingFilter, nsRect const&, nsRect const&, nsPoint const&, nsRect const&, mozilla::Maybe<mozilla::SVGImageContext> const&, unsigned int, mozilla::gfx::ExtendMode, float) [layout/base/nsLayoutUtils.cpp:6170]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #08: static nsLayoutUtils::DrawBackgroundImage(gfxContext&, nsIFrame*, nsPresContext*, imgIContainer*, mozilla::gfx::SamplingFilter, nsRect const&, nsRect const&, nsSize const&, nsPoint const&, nsRect const&, unsigned int, mozilla::gfx::ExtendMode, float) [layout/base/nsLayoutUtils.cpp:6421]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #09: mozilla::nsImageRenderer::Draw(nsPresContext*, gfxContext&, nsRect const&, nsRect const&, nsRect const&, nsPoint const&, nsSize const&, mozilla::gfx::IntRectTyped<mozilla::CSSPixel> const&, float) [layout/painting/nsImageRenderer.cpp:482]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #10: mozilla::nsImageRenderer::DrawLayer(nsPresContext*, gfxContext&, nsRect const&, nsRect const&, nsPoint const&, nsRect const&, nsSize const&, float) [layout/painting/nsImageRenderer.cpp:737]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #11: static nsCSSRendering::PaintStyleImageLayerWithSC(nsCSSRendering::PaintBGParams const&, gfxContext&, mozilla::ComputedStyle*, nsStyleBorder const&) [layout/painting/nsCSSRendering.cpp:2623]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #12: static nsCSSRendering::PaintStyleImageLayer(nsCSSRendering::PaintBGParams const&, gfxContext&) [layout/painting/nsCSSRendering.cpp:1856]
[task 2021-01-22T04:17:02.384Z] 04:17:02     INFO - GECKO(5632) | #13: nsDisplayBackgroundImage::PaintInternal(nsDisplayListBuilder*, gfxContext*, nsRect const&, nsRect*) [layout/painting/nsDisplayList.cpp:4209]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #14: nsDisplayBackgroundImage::Paint(nsDisplayListBuilder*, gfxContext*) [layout/painting/nsDisplayList.cpp:4187]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #15: 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:7172]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #16: static 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:7333]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #17: mozilla::layers::ClientSingleTiledLayerBuffer::PaintThebes(mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, 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::TilePaintFlags) [gfx/layers/client/SingleTiledContentClient.cpp:222]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #18: mozilla::layers::ClientTiledPaintedLayer::RenderHighPrecision(mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, 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*) [gfx/layers/client/ClientTiledPaintedLayer.cpp:358]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #19: mozilla::layers::ClientTiledPaintedLayer::RenderLayer() [gfx/layers/client/ClientTiledPaintedLayer.cpp:576]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #20: mozilla::layers::ClientContainerLayer::RenderLayer() [gfx/layers/client/ClientContainerLayer.h:55]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #21: mozilla::layers::ClientContainerLayer::RenderLayer() [gfx/layers/client/ClientContainerLayer.h:55]
[task 2021-01-22T04:17:02.385Z] 04:17:02     INFO - GECKO(5632) | #22: mozilla::layers::ClientContainerLayer::RenderLayer() [gfx/layers/client/ClientContainerLayer.h:55]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #23: 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:352]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #24: 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:408]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #25: nsDisplayList::PaintRoot(nsDisplayListBuilder*, gfxContext*, unsigned int) [layout/painting/nsDisplayList.cpp:2613]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #26: static nsLayoutUtils::PaintFrame(gfxContext*, nsIFrame*, nsRegion const&, unsigned int, nsDisplayListBuilderMode, nsLayoutUtils::PaintFrameFlags) [layout/base/nsLayoutUtils.cpp:3432]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #27: mozilla::PresShell::Paint(nsView*, nsRegion const&, mozilla::PaintFlags) [layout/base/PresShell.cpp:6392]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #28: nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*) [view/nsViewManager.cpp:460]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #29: nsViewManager::ProcessPendingUpdatesForView(nsView*, bool) [view/nsViewManager.cpp:396]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #30: nsViewManager::ProcessPendingUpdates() [view/nsViewManager.cpp:1017]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #31: nsRefreshDriver::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [layout/base/nsRefreshDriver.cpp:2377]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #32: mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) [layout/base/nsRefreshDriver.cpp:336]
[task 2021-01-22T04:17:02.386Z] 04:17:02     INFO - GECKO(5632) | #33: mozilla::RefreshDriverTimer::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [layout/base/nsRefreshDriver.cpp:353]

I'm still not sure what it tries to do. But the test has no image, so, I guess that it's a reflow for chrome UI like scrollbar or something, and it consumes the synthesized PageDown or PageUp handling.

emilio: Do you know something about the warning? Even if the test pass, I see the warning later. So, when it occurs during the test, this intermittent failure occurs.

(My patch for bug 1685491 increases this failure, perhaps, it might change the timing of running pending runnable events.)

Flags: needinfo?(emilio)

So this warning has started happening somewhat recently. Looking a bit more closely into it, the warning itself is harmless. We're reconstructing native anonymous content (like scrollbars and so on), but the parent we were going to reconstruct is gone. The problem is that in this case the parent is the document element, so we're reframing the whole document, which seems quite unfortunate...

I don't see a patch in bug 1685491 so I can't test with that applied... But I tracked this warning down locally and it ends up being caused by this, which obviously causes us to reframe everything:

https://searchfox.org/mozilla-central/rev/d5e98892f9553f9113e69c585308008e681e19c9/layout/base/nsPresContext.cpp#561

So the stack that causes this is:

#1  0x00007f1557b3ec09 in mozilla::PresShell::Observe (this=<optimized out>, aSubject=<optimized out>, aTopic=0x7f15500d3897 "font-info-updated", aData=0x0) at /home/emilio/src/moz/gecko-5/layout/base/PresShell.cpp:9963
#2  0x00007f1554633209 in nsObserverList::NotifyObservers (this=<optimized out>, aSubject=0x0, aTopic=0x7f15500d3897 "font-info-updated", someData=0x0) at /home/emilio/src/moz/gecko-5/xpcom/ds/nsObserverList.cpp:70
#3  0x00007f155463c8c5 in nsObserverService::NotifyObservers (this=<optimized out>, aSubject=0x0, aTopic=0x7f15500d3897 "font-info-updated", aSomeData=0x0) at /home/emilio/src/moz/gecko-5/xpcom/ds/nsObserverService.cpp:287
#4  0x00007f155571b5e5 in gfxPlatform::ForceGlobalReflow () at /home/emilio/src/moz/gecko-5/gfx/thebes/gfxPlatform.cpp:2362
#5  0x00007f155571aa22 in gfxPlatform::UpdateFontList (this=<optimized out>, aFullRebuild=false) at /home/emilio/src/moz/gecko-5/gfx/thebes/gfxPlatform.cpp:1803
#6  0x00007f15574d491e in mozilla::dom::ContentChild::RecvRebuildFontList (this=<optimized out>, aFullRebuild=@0x7fff05146570: false) at /home/emilio/src/moz/gecko-5/dom/ipc/ContentChild.cpp:2416
#7  0x00007f1554ec4dd0 in mozilla::dom::PContentChild::OnMessageReceived

Which makes me think this is caused by some of the recent changes to font loading that Jonathan has made.

So maybe what your patch changed was adding a test or something that made this test come before, or some other thing that could change the order we load fonts or something...

Jonathan, what was the right way to disable this behavior, so that Masayuki can see if doing that helps?

Masayuki, I think disabling that incremental font loading might help

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

To avoid this, set the pref gfx.font_rendering.fallback.async to false for whatever test is triggering font fallback. (It may be caused by a testcase that's loaded just before this one initiating the async font loading work, which then causes a reflow everywhere when it completes.)

Flags: needinfo?(jfkthame)

(So the simplest thing to try is to add that pref to the mochitest.ini here, and see if that fixes the issue.)

Thank you for the investigation, emilio.

My patches are here: https://treeherder.mozilla.org/jobs?repo=try&resultStatus=testfailed%2Cbusted%2Cexception%2Csuccess%2Cusercancel%2Crunning%2Cpending%2Crunnable&revision=a64d71078f225f43426541b6410515391bf3a522 (not the latest ones, though)

Indeed, I added a new test for bug 1103374 because my patch (part 5) redesigns around it.

However, this is also happens in TV, so, perhaps, I need to disable the pref for mochitest-plain-*, but also disable the test if verity.

Trying to disable the pref under layout/base/tests (it might need to move it under libeditor/tests if the pref is required by some other tests):
https://treeherder.mozilla.org/jobs?repo=try&selectedTaskRun=alVyS_-SR-mxYvfIfQ7qwQ.0&resultStatus=testfailed%2Cbusted%2Cexception%2Csuccess%2Cusercancel%2Crunning%2Cpending%2Crunnable&revision=6b410b157d7dd3e60303d0369ad95e20bd2b7582

(In reply to Masayuki Nakano [:masayuki] (he/him)(JST, +0900)(Got a cold, working slower) from comment #42)

However, this is also happens in TV, so, perhaps, I need to disable the pref for mochitest-plain-*, but also disable the test if verity.

Lots of tests fail when run under TV (but are fine when run normally), I wouldn't recommend making TV specific fixes. We only run TV jobs when the test changes. If a test fails on TV it is good to know about, but not necessarily to take any action.

:tnikkel thank you for the information.

And I confirmed that the failure is occurred by unexpected whole reflow.
https://treeherder.mozilla.org/logviewer?job_id=327536071&repo=try&lineNumber=2632
The scroll position is suddenly reset to 0.

I think I should add a detection of this bug in the test until somebody fixes the root cause.

Unfortunately, the change for bug 1685491 increases the frequency of the
intermittent failure of test_scroll_per_page.html and creates some new
intermittent failure messages because of changing some timing of the checks.

When the failure occurs, I see this warning before it:
https://searchfox.org/mozilla-central/rev/358fbca0398ac651f5ea6030be39b1870ec180a5/layout/base/nsCSSFrameConstructor.cpp#8459

That's caused while loading a background image, according to the stack:

#01: mozilla::RestyleManager::DoProcessPendingRestyles
#02: mozilla::PresShell::DoFlushPendingNotifications
#03: mozilla::dom::Document::FlushPendingNotifications
#04: mozilla::image::SVGDocumentWrapper::FlushImageTransformInvalidation
#05: mozilla::image::VectorImage::CreateSurface
#06: mozilla::image::VectorImage::Draw
#07: DrawImageInternal
#08: static nsLayoutUtils::DrawBackgroundImage
#09: mozilla::nsImageRenderer::Draw
#10: mozilla::nsImageRenderer::DrawLayer
#11: static nsCSSRendering::PaintStyleImageLayerWithSC
#12: static nsCSSRendering::PaintStyleImageLayer
#13: nsDisplayBackgroundImage::PaintInternal
#14: nsDisplayBackgroundImage::Paint
#15: mozilla::FrameLayerBuilder::PaintItems
#16: static mozilla::FrameLayerBuilder::DrawPaintedLayer
#17: mozilla::layers::ClientSingleTiledLayerBuffer::PaintThebes
#18: mozilla::layers::ClientTiledPaintedLayer::RenderHighPrecision
#19: mozilla::layers::ClientTiledPaintedLayer::RenderLayer
#20: mozilla::layers::ClientContainerLayer::RenderLayer()
#21: mozilla::layers::ClientContainerLayer::RenderLayer()
#22: mozilla::layers::ClientContainerLayer::RenderLayer()
#23: mozilla::layers::ClientLayerManager::EndTransactionInternal
#24: mozilla::layers::ClientLayerManager::EndTransaction
#25: nsDisplayList::PaintRoot
#26: static nsLayoutUtils::PaintFrame
#27: mozilla::PresShell::Paint
#28: nsViewManager::ProcessPendingUpdatesPaint
#29: nsViewManager::ProcessPendingUpdatesForView
#30: nsViewManager::ProcessPendingUpdates
#31: nsRefreshDriver::Tick

But the test does not have image, so, this must be a reflow for a part of our
UI in the content process, e.g., scrollbar or something.

I filed bug 1688430 for this issue for fixing the root cause, however, this
patch makes retry to test if it detects this bug (unfortunately, we cannot
detect it on Android).

Depends on D102882

Assignee: nobody → masayuki
Status: NEW → ASSIGNED

So disabling the pref didn't work? I'm pretty sure that warning is just a red herring, and it's caused by a global reflow of some sort... I'm happy to dig and check where that comes from in that specific test with your patches applied if you tell me how to reproduce the timeout.

Flags: needinfo?(masayuki)

(In reply to Emilio Cobos Álvarez (:emilio) from comment #46)

So disabling the pref didn't work?

It also works fine, but it's under layout/base/tests. Isn't it important to check the behavior with the pref enabled for some other tests? Even if we should just disable the test, perhaps, the scroll related tests should be moved to independent directory or under dom/events/test etc. I'm really afraid to disable the pref related to layout in under layout/.

I'm pretty sure that warning is just a red herring, and it's caused by a global reflow of some sort... I'm happy to dig and check where that comes from in that specific test with your patches applied if you tell me how to reproduce the timeout.

I have no idea how to reproduce it in any environment. I cannot reproduce it on my machine, but it's almost always appear in trysever. So, I guess that it's caused by slower CPU. Try ./mach mochitest test_scroll_per_page.html --verify to reproduce it on your machine without may patch for this or commenting out the observer method's about = true in this patch.

Flags: needinfo?(masayuki)

Emilio, if you're on Linux, it seems that bug 1664969 is easier to reproduce. It's also caused by the global reflow.

(In reply to Masayuki Nakano [:masayuki] (he/him)(JST, +0900)(Still not recoverd perfectly) from comment #47)

(In reply to Emilio Cobos Álvarez (:emilio) from comment #46)

So disabling the pref didn't work?

It also works fine, but it's under layout/base/tests. Isn't it important to check the behavior with the pref enabled for some other tests?

That is more of a question for Jonathan. But IMHO tests shouldn't need to work around timing issues.

Attachment #9198936 - Attachment description: Bug 1541915 - Check scroll amount after confirming scroll position is changed by `PageDown`/`PageUp` r=smaug!,jfkthame! → Bug 1541915 - Make `test_scroll_per_page.html` retry current test chunk if global reflow which is not related to this test occurs r=smaug!,jfkthame!

Asynchronous font loading occurs during scroll position tests, it resets
scroll positions to 0. So, this causes intermittent failures in such tests.
Disabling the async font loading under layout/base/tests may not be proper
solution because some layout tests may work perfectly even if global reflow
may occur.

Therefore, this patch moves 2 tests which check scroll position to under
dom/events/test and disabling the async font loading since the global reflow
shouldn't be related to the tests under dom/events.

It waits a scroll event after synthesizing PageDown or PageUp key event
and it causes intermittent timeout if unexpected cases occurred randomly.
Therefore, we've not have enough hint to fix the existing intermittent timeout.

For making this bug forward, it should stop waiting a scroll event with a
Promise. Instead, it should check whether a scroll event fired or not
with a few times retry.

Depends on D103013

Attachment #9198936 - Attachment is obsolete: true
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/a8e6a18c719f part 1: Move scroll position tests from `layout/base/tests` to `dom/events/test` and disable async font loading in `dom/events/test` r=smaug,jfkthame https://hg.mozilla.org/integration/autoland/rev/ab1ef0f070f1 part 2: Make `test_scroll_per_page.html` never timed out r=smaug
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → 87 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: