Assertion failure: [GFX1]: [Tiling:Client] Failed to allocate a TextureClient, at src/gfx/2d/Logging.h:748
Categories
(Core :: Graphics, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox69 | --- | fix-optional |
People
(Reporter: tsmith, Unassigned)
References
(Blocks 1 open bug)
Details
(4 keywords)
Attachments
(2 files)
This test case is Android specific.
Reduced with m-c: 20190529-2bb77ed1fcc5
Assertion failure: [GFX1]: [Tiling:Client] Failed to allocate a TextureClient, at src/gfx/2d/Logging.h:748
Hit MOZ_CRASH(GFX: An assert from the graphics logger) at src/gfx/2d/Logging.h:749
eip = 0x7e3d04b3 esp = 0x85dee260 ebp = 0x85dee278 ebx = 0x851dcdc8
esi = 0x000002ed edi = 0x82823101 eax = 0x8282315d ecx = 0x8623a17c
edx = 0x0000007e efl = 0x00210286
OS|Android|0.0.0 Linux 4.4.124+ #1 SMP PREEMPT Sun Nov 4 14:31:25 UTC 2018 i686
CPU|x86|GenuineIntel family 6 model 6 stepping 3|4
GPU|||
Crash|SIGSEGV|0x0|13
13|0|libxul.so|mozilla::gfx::Log<1, mozilla::gfx::CriticalLogger>::WriteLog(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)|hg:hg.mozilla.org/mozilla-central:gfx/2d/Logging.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|749|0x1e
13|1|libxul.so|mozilla::gfx::Log<1, mozilla::gfx::CriticalLogger>::Flush()|hg:hg.mozilla.org/mozilla-central:gfx/2d/Logging.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|287|0xf
13|2|libxul.so|mozilla::gfx::Log<1, mozilla::gfx::CriticalLogger>::~Log()|hg:hg.mozilla.org/mozilla-central:gfx/2d/Logging.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|280|0x1f
13|3|libxul.so|mozilla::layers::CreateBackBufferTexture(mozilla::layers::TextureClient*, mozilla::layers::CompositableClient&, mozilla::layers::TextureClientAllocator*)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/TiledContentClient.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x14
13|4|libxul.so|mozilla::layers::TileClient::AcquireBackBuffer(mozilla::layers::CompositableClient&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, gfxContentType, mozilla::layers::SurfaceMode, mozilla::layers::TilePaintFlags)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/TiledContentClient.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|609|0xe
13|5|libxul.so|mozilla::layers::ClientMultiTiledLayerBuffer::ValidateTile(mozilla::layers::TileClient&, mozilla::gfx::IntPointTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits>&, mozilla::layers::TilePaintFlags)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/MultiTiledContentClient.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|339|0x2f
13|6|libxul.so|mozilla::layers::ClientMultiTiledLayerBuffer::Update(mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layers::TilePaintFlags)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/MultiTiledContentClient.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|230|0x64
13|7|libxul.so|mozilla::layers::ClientMultiTiledLayerBuffer::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)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/MultiTiledContentClient.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|117|0x13
13|8|libxul.so|mozilla::layers::ClientMultiTiledLayerBuffer::ProgressiveUpdate(mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits>&, mozilla::layers::BasicTiledLayerPaintData*, 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*)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/MultiTiledContentClient.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|666|0x16
13|9|libxul.so|mozilla::layers::ClientTiledPaintedLayer::RenderLowPrecision(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*)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientTiledPaintedLayer.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|428|0x33
13|10|libxul.so|mozilla::layers::ClientTiledPaintedLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientTiledPaintedLayer.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|625|0x21
13|11|libxul.so|non-virtual thunk to mozilla::layers::ClientTiledPaintedLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientTiledPaintedLayer.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|12|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|13|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|14|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|15|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|16|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|17|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|18|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|19|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|20|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|21|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|22|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|23|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|24|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|25|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|26|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|27|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|28|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|29|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|30|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|31|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|32|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|33|libxul.so|<name omitted>|hg:hg.mozilla.org/mozilla-central:js/xpconnect/public/xpc_map_end.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|45|0x8
13|34|libxul.so|mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|53|0xf
13|35|libxul.so|non-virtual thunk to mozilla::layers::ClientContainerLayer::RenderLayer()|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientContainerLayer.h:2bb77ed1fcc5ad06f91612d419160f54c09369db|0|0x21
13|36|libxul.so|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)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/ClientLayerManager.cpp:2bb77ed1fcc5ad06f91612d419160f54c09369db|318|0x8
13|37|libxul.so|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)|hg:hg.mozilla.org/mozilla-central:gfx/layers/client/
...
Comment 1•5 years ago
|
||
Given the "scale: 1 36 0.413", I'm guessing it asked for something too big and it refused to allocate the surface.
Comment 2•5 years ago
|
||
This doesn't reproduce for me, and nothing in the layer dump looks suspicious.
Tyson, is it possible to reproduce with layout.display-list.dump=true, or to use mozregression to see if there is a regression range?
Reporter | ||
Comment 3•5 years ago
|
||
It also appears that layout.css.individual-transform.enabled=true
is required to repro.
Comment 4•5 years ago
|
||
Thanks, yeah I can reproduce with that pref.
You can't actually see the layer in the log because we crash before the newest layer tree is dumped. But yes, as Andrew guessed the large scale means the bounds of the outline display item are gigantic, so the layer it creates is gigantic. We clip the layer to the critical display port when painting high-res tiles, but when painting low-res ones we attempt to paint the whole layer. This allocates far too many tiles and we run out of memory and crash.
I can also reproduce this on Linux if I enable tiles, presumably it affects OS X too.
I traced the size of the layer back to here: https://searchfox.org/mozilla-central/source/layout/painting/FrameLayerBuilder.cpp#4661 - itemBuildingRect is small, but once scaled by the scale we get the large size.
On Linux with tiles disabled the layer is large but not crazy. Is there some code to clip the paint region to the display port for ClientPaintedLayer which is missing for ClientTiledPaintedLayer? Should we be doing that in the tiling code somewhere? I seem to have forgotten how this is supposed to work pretty quickly!
Comment 5•5 years ago
|
||
I would expect the building rect to only cover the area that is visible within the displayport. For values inside the transform, that would be a tiny rectangle, such that it scales up to roughly the displayport size.
The other possibility is that we have prerendering of the transform, but I can't see how we'd be triggering that.
Updated•5 years ago
|
Updated•5 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Description
•