List items
Items from the current list are shown below.
Blog
8 Jun 2024 : Day 257 #
It's an early start for me today as I'm travelling to London and back. But I had difficulty sleeping last night and am up even earlier than I usually would be, so I'm pleased to discover that the build I kicked off last night has already completed.
This means I now have two sets of RPM packages. One set that represents the last commit of ESR 91 when WebGL was working and a second set that adds a commit on top of this, but which breaks WebGL.
Here's a list of the packages, where the sailfishos.esr91 represents the most recent changes that caused the breakage, while the temp branch has these changes reverted.
Previously the broken RPMs were crashing on a call to ToSurfaceDescriptor(). The reason for the crash is that I'd added an explicit request for the app to crash if this was ever called:
So I'm expecting to get a new backtrace from the crash. The question will be: what is this crash and how does it compare with the execution of the working version. As soon as I have this backtrace it will hopefully be clear the path the execution took to get there. Then I'll reinstall the working version and compare against the equivalent path there to establish what's changed.
This is the plan, at least.
They packages have copied over, so let's get to work.
So my new plan is to debug the same piece of code that I debugged yesterday on the working version. Let's see if anything has changed.
To help with this search I've attached breakpoints to the majority of the new functions that have been added or seen significant changes in the latest commit. Here they all are (there are quite a few):
Contrariwise if they're not hit then they're not part of the execution flow and it should be safe for me to ignore them in my investigation.
When I now debug the program there are three breakpoints that hit; or rather two breakpoints are hit a total of three times:
That feels like plenty to be getting on with. Tomorrow I'll need to compare these backtraces with the working ESR 91 code to see whether it's possible to get to the same place or not and, if it is, what might have changed.
If you'd like to read any of my other gecko diary entries, they're all available on my Gecko-dev Diary page.
This means I now have two sets of RPM packages. One set that represents the last commit of ESR 91 when WebGL was working and a second set that adds a commit on top of this, but which breaks WebGL.
Here's a list of the packages, where the sailfishos.esr91 represents the most recent changes that caused the breakage, while the temp branch has these changes reverted.
$ ls webgl-broken/ webgl-working/ webgl-broken/: xulrunner-qt5-91.9.1+git1+sailfishos.esr91. 20240604225626.a84dc7d4765d+gecko.dev.7437a9d17284-1.aarch64.rpm xulrunner-qt5-debuginfo-91.9.1+git1+sailfishos.esr91. 20240604225626.a84dc7d4765d+gecko.dev.7437a9d17284-1.aarch64.rpm xulrunner-qt5-debugsource-91.9.1+git1+sailfishos.esr91. 20240604225626.a84dc7d4765d+gecko.dev.7437a9d17284-1.aarch64.rpm xulrunner-qt5-devel-91.9.1+git1+sailfishos.esr91. 20240604225626.a84dc7d4765d+gecko.dev.7437a9d17284-1.aarch64.rpm xulrunner-qt5-misc-91.9.1+git1+sailfishos.esr91. 20240604225626.a84dc7d4765d+gecko.dev.7437a9d17284-1.aarch64.rpm webgl-working/: xulrunner-qt5-91.9.1+git1+temp. 20240212214917.9f64ce35a187-1.aarch64.rpm xulrunner-qt5-debuginfo-91.9.1+git1+temp. 20240212214917.9f64ce35a187-1.aarch64.rpm xulrunner-qt5-debugsource-91.9.1+git1+temp. 20240212214917.9f64ce35a187-1.aarch64.rpm xulrunner-qt5-devel-91.9.1+git1+temp. 20240212214917.9f64ce35a187-1.aarch64.rpm xulrunner-qt5-misc-91.9.1+git1+temp. 20240212214917.9f64ce35a187-1.aarch64.rpmWhile the newly built RPMs transfer over to my phone, let me summarise what I'm expecting.
Previously the broken RPMs were crashing on a call to ToSurfaceDescriptor(). The reason for the crash is that I'd added an explicit request for the app to crash if this was ever called:
Maybe<layers::SurfaceDescriptor> SharedSurface_Basic::ToSurfaceDescriptor() { MOZ_CRASH("GFX: ToSurfaceDescriptor"); return Nothing(); }I added it for debugging purposes while working on the WebView changes. These latest packages have this MOZ_CRASH statement removed, so I'm no longer expecting a crash to happen here. However, I do expect it to crash nevertheless, just in some other location. Removing the MOZ_CRASH would be too simple a fix for it to actually work as a solution!
So I'm expecting to get a new backtrace from the crash. The question will be: what is this crash and how does it compare with the execution of the working version. As soon as I have this backtrace it will hopefully be clear the path the execution took to get there. Then I'll reinstall the working version and compare against the equivalent path there to establish what's changed.
This is the plan, at least.
They packages have copied over, so let's get to work.
$ sailfish-browser https://shadertoy.com [...] Created LOG for EmbedLiteLayerManager JavaScript warning: https://www.shadertoy.com/, line 2388: WebGL warning: drawArraysInstanced: Tex image TEXTURE_2D level 0 is incurring lazy initialization. [...]Well, that's interesting. There is now no crash, so that failure was entirely self-induced. However the WebGL is broken. It's just displaying an empty canvas where the WebGL should be rendered. This makes things somewhat harder to debug, because now there's no obvious please to start from.
So my new plan is to debug the same piece of code that I debugged yesterday on the working version. Let's see if anything has changed.
(gdb) info break Num Type Disp Enb Address What 2 breakpoint keep y 0x0000007ff29b0cfc in mozilla::layers:: ShareableCanvasRenderer::UpdateCompositableClient() at gfx/layers/ ShareableCanvasRenderer.cpp:191 breakpoint already hit 1 time (gdb) c [...] Thread 8 "GeckoWorkerThre" hit Breakpoint 2, mozilla::layers:: ShareableCanvasRenderer::UpdateCompositableClient (this=0x7fc963c520) at gfx/layers/ShareableCanvasRenderer.cpp:192 192 FirePreTransactionCallback(); (gdb) n 195 auto tc = fnGetExistingTc(); (gdb) n 196 if (!tc) { (gdb) p tc $1 = {mRawPtr = 0x0} (gdb) n 198 tc = fnMakeTcFromSnapshot(); (gdb) n 200 if (tc != mFrontBufferFromDesc) { (gdb) p tc $2 = {mRawPtr = 0x7fc8ceb370} (gdb) p tc.mRawPtr $3 = (mozilla::layers::TextureClient *) 0x7fc8ceb370 (gdb)This matches the flow in the working version, so it seems this isn't where the problem is. I'm going to have to look further afield.
To help with this search I've attached breakpoints to the majority of the new functions that have been added or seen significant changes in the latest commit. Here they all are (there are quite a few):
(gdb) break GLScreenBuffer::Create Breakpoint 4 at 0x7ff28a7d94: file gfx/gl/GLScreenBuffer.cpp, line 171. (gdb) break InitOffscreen Breakpoint 5 at 0x7ff28d2500: file gfx/gl/GLContext.cpp, line 2345. (gdb) break GLContext::CreateScreenBuffer Breakpoint 6 at 0x7ff28d2428: file gfx/gl/GLContext.cpp, line 2073. (gdb) b WaylandGLSurface::WaylandGLSurface Breakpoint 7 at 0x7ff28c084c: file gfx/gl/GLContextProviderEGL.cpp, line 954. (gdb) b GLContextProviderEGL::CreateOffscreen Breakpoint 8 at 0x7ff28d2610: file gfx/gl/GLContextProviderEGL.cpp, line 1451. (gdb) b ReadBuffer::Create Breakpoint 9 at 0x7ff28a6ea8: file gfx/gl/GLScreenBuffer.cpp, line 358. (gdb) b SurfaceFactory::SurfaceFactory Breakpoint 10 at 0x7ff28acdc4: file gfx/gl/SharedSurface.cpp, line 167. (gdb) b SharedSurface_EGLImage::SharedSurface_EGLImage Breakpoint 11 at 0x7ff28d363c: file gfx/gl/SharedSurfaceEGL.cpp, line 95. (gdb) b TextureImageEGL::TextureImageEGL Breakpoint 12 at 0x7ff28d3e80: file gfx/gl/TextureImageEGL.cpp, line 46. (gdb) r [...]If any of these breakpoints hit, that means they'd be good candidates for comparing against the working version. If they're new (rather just heavily amended) methods then that'll be even more relevant, because that'll indicate a wholesale change of flow. In that case I'll need to work backwards through the call stack to see where — and why — the divergence happened.
Contrariwise if they're not hit then they're not part of the execution flow and it should be safe for me to ignore them in my investigation.
When I now debug the program there are three breakpoints that hit; or rather two breakpoints are hit a total of three times:
Thread 8 "GeckoWorkerThre" hit Breakpoint 10, mozilla::gl:: SurfaceFactory::SurfaceFactory (this=0x7fc95eb220, partialDesc=..., allocator=..., flags=@0x7fdf29256c: mozilla::layers::TextureFlags::NO_FLAGS) at gfx/gl/SharedSurface.cpp:167 167 SurfaceFactory::SurfaceFactory(const PartialSharedSurfaceDesc& partialDesc, Thread 37 "Compositor" hit Breakpoint 12, mozilla::gl:: TextureImageEGL::TextureImageEGL (this=0x7ed81ab2d0, aTexture=20, aSize=..., aWrapMode=33071, aContentType=gfxContentType::COLOR_ALPHA, aContext=0x7ed81a2780, aFlags=mozilla::gl::TextureImage::OriginBottomLeft, aTextureState=mozilla::gl::TextureImage::Created, aImageFormat=mozilla::gfx: :SurfaceFormat::B8G8R8A8) at gfx/gl/TextureImageEGL.cpp:46 46 TextureImageEGL::TextureImageEGL(GLuint aTexture, const gfx::IntSize& aSize, Thread 37 "Compositor" hit Breakpoint 12, mozilla::gl:: TextureImageEGL::TextureImageEGL (this=0x7ed825ed80, aTexture=21, aSize=..., aWrapMode=33071, aContentType=gfxContentType::COLOR_ALPHA, aContext=0x7ed81a2780, aFlags=mozilla::gl::TextureImage::OriginBottomLeft, aTextureState=mozilla::gl::TextureImage::Created, aImageFormat=mozilla::gfx: :SurfaceFormat::B8G8R8A8) at gfx/gl/TextureImageEGL.cpp:46 46 TextureImageEGL::TextureImageEGL(GLuint aTexture, const gfx::IntSize& aSize,Let's get some backtraces from those. These are really long backtraces and I do apologise for that. I want to keep copies here for future reference, but there's no need to look at them in any detail. Certainly not right now anyway. Here's the first one:
Thread 8 "GeckoWorkerThre" hit Breakpoint 10, mozilla::gl:: SurfaceFactory::SurfaceFactory (this=0x7fc95e9c10, partialDesc=..., allocator=..., flags=@0x7fdf29256c: mozilla::layers::TextureFlags::NO_FLAGS) at gfx/gl/SharedSurface.cpp:167 167 SurfaceFactory::SurfaceFactory(const PartialSharedSurfaceDesc& partialDesc, (gdb) bt #0 mozilla::gl::SurfaceFactory::SurfaceFactory (this=0x7fc95e9c10, partialDesc=..., allocator=..., flags=@0x7fdf29256c: mozilla::layers::TextureFlags::NO_FLAGS) at gfx/gl/SharedSurface.cpp:167 #1 0x0000007ff28d3950 in mozilla::gl::SurfaceFactory_Basic:: SurfaceFactory_Basic (this=0x7fc95e9c10, gl=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/RefPtr.h:113 #2 0x0000007ff369d0d4 in mozilla::MakeUnique<mozilla::gl:: SurfaceFactory_Basic, mozilla::gl::GLContext&> () at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/cxxalloc.h:33 #3 mozilla::WebGLContext::Present (this=this@entry=0x7fc93ab2a0, xrFb=<optimized out>, consumerType=consumerType@entry=mozilla::layers::TextureType::Unknown, webvr=webvr@entry=false) at dom/canvas/WebGLContext.cpp:929 #4 0x0000007ff366511c in mozilla::HostWebGLContext::Present (webvr=false, t=mozilla::layers::TextureType::Unknown, xrFb=<optimized out>, this=<optimized out>) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/ mozilla/RefPtr.h:280 #5 mozilla::ClientWebGLContext::Run<void (mozilla::HostWebGLContext::*)( unsigned long, mozilla::layers::TextureType, bool) const, &(mozilla:: HostWebGLContext::Present(unsigned long, mozilla::layers::TextureType, bool) const), unsigned long, mozilla::layers::TextureType const&, bool const&> ( this=<optimized out>, args#0=@0x7fdf2926c0: 0, args#1=@0x7fdf2926bf: mozilla::layers::TextureType::Unknown, args#2=@0x7fdf2926be: false) at dom/canvas/ClientWebGLContext.cpp:313 #6 0x0000007ff3665284 in mozilla::ClientWebGLContext::Present ( this=this@entry=0x7f28004210, xrFb=xrFb@entry=0x0, type=<optimized out>, webvr=<optimized out>, webvr@entry=false) at dom/canvas/ClientWebGLContext.cpp:363 #7 0x0000007ff3690a94 in mozilla::ClientWebGLContext::OnBeforePaintTransaction (this=0x7f28004210) at dom/canvas/ClientWebGLContext.cpp:345 #8 0x0000007ff28fff30 in mozilla::layers::CanvasRenderer:: FirePreTransactionCallback (this=this@entry=0x7fc93fb900) at gfx/layers/CanvasRenderer.cpp:75 #9 0x0000007ff29b0d04 in mozilla::layers::ShareableCanvasRenderer:: UpdateCompositableClient (this=0x7fc93fb900) at gfx/layers/ShareableCanvasRenderer.cpp:192 #10 0x0000007ff29f08a0 in mozilla::layers::ClientCanvasLayer::RenderLayer ( this=0x7fc95fc380) at gfx/layers/client/ClientCanvasLayer.cpp:25 #11 0x0000007ff29ef9c0 in mozilla::layers::ClientLayer::RenderLayerWithReadback (this=<optimized out>, aReadback=<optimized out>) at gfx/layers/client/ClientLayerManager.h:365 #12 0x0000007ff29ffd08 in mozilla::layers::ClientContainerLayer::RenderLayer ( this=0x7fc92fc450) at gfx/layers/Layers.h:1051 #13 0x0000007ff29ef9c0 in mozilla::layers::ClientLayer::RenderLayerWithReadback (this=<optimized out>, aReadback=<optimized out>) at gfx/layers/client/ClientLayerManager.h:365 #14 0x0000007ff29ffd08 in mozilla::layers::ClientContainerLayer::RenderLayer ( this=0x7fc934a230) at gfx/layers/Layers.h:1051 #15 0x0000007ff29ef9c0 in mozilla::layers::ClientLayer::RenderLayerWithReadback (this=<optimized out>, aReadback=<optimized out>) at gfx/layers/client/ClientLayerManager.h:365 #16 0x0000007ff29ffd08 in mozilla::layers::ClientContainerLayer::RenderLayer ( this=0x7fc8d123e0) at gfx/layers/Layers.h:1051 #17 0x0000007ff2a069ec in mozilla::layers::ClientLayerManager:: EndTransactionInternal (this=this@entry=0x7fc8a5ea90, aCallback=aCallback@entry= 0x7ff46a31ec <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*)>, aCallbackData=aCallbackData@entry=0x7fdf293268) at gfx/layers/client/ClientLayerManager.cpp:341 #18 0x0000007ff2a118ec in mozilla::layers::ClientLayerManager::EndTransaction ( this=0x7fc8a5ea90, aCallback=0x7ff46a31ec <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*)>, aCallbackData=0x7fdf293268, aFlags=mozilla::layers:: LayerManager::END_DEFAULT) at gfx/layers/client/ClientLayerManager.cpp:397 #19 0x0000007ff46a060c in nsDisplayList::PaintRoot ( this=this@entry=0x7fdf295078, aBuilder=aBuilder@entry=0x7fdf293268, aCtx=aCtx@entry=0x0, aFlags=aFlags@entry=13, aDisplayListBuildTime=...) at layout/painting/nsDisplayList.cpp:2622 #20 0x0000007ff442c968 in nsLayoutUtils::PaintFrame ( aRenderingContext=aRenderingContext@entry=0x0, aFrame=aFrame@entry=0x7fc9280d10, aDirtyRegion=..., aBackstop=aBackstop@entry=4294967295, aBuilderMode=aBuilderMode@entry=nsDisplayListBuilderMode::Painting, aFlags=aFlags@entry=(nsLayoutUtils::PaintFrameFlags::WidgetLayers | nsLayoutUtils::PaintFrameFlags::ExistingTransaction | nsLayoutUtils:: PaintFrameFlags::NoComposite)) at ${PROJECT}/obj-build-mer-qt-xr/dist/ include/mozilla/MaybeStorageBase.h:80 #21 0x0000007ff43b705c in mozilla::PresShell::Paint ( this=this@entry=0x7fc921c9a0, aViewToPaint=aViewToPaint@entry=0x7fc8563cb0, aDirtyRegion=..., aFlags=aFlags@entry=mozilla::PaintFlags::PaintLayers) at layout/base/PresShell.cpp:6400 #22 0x0000007ff41eef2c in nsViewManager::ProcessPendingUpdatesPaint ( this=this@entry=0x7fc8563c70, aWidget=aWidget@entry=0x7fc90d0760) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/gfx/RectAbsolute.h:43 [...] #55 0x0000007fefbab89c in ?? () from /lib64/libc.so.6 (gdb)Here's the second one:
Thread 37 "Compositor" hit Breakpoint 12, mozilla::gl:: TextureImageEGL::TextureImageEGL (this=0x7ee01faa90, aTexture=21, aSize=..., aWrapMode=33071, aContentType=gfxContentType::COLOR_ALPHA, aContext=0x7ee01a28a0, aFlags=mozilla::gl::TextureImage::OriginBottomLeft, aTextureState=mozilla::gl::TextureImage::Created, aImageFormat=mozilla::gfx: :SurfaceFormat::B8G8R8A8) at gfx/gl/TextureImageEGL.cpp:46 46 TextureImageEGL::TextureImageEGL(GLuint aTexture, const gfx::IntSize& aSize, (gdb) bt #0 mozilla::gl::TextureImageEGL::TextureImageEGL (this=0x7ee01faa90, aTexture=21, aSize=..., aWrapMode=33071, aContentType=gfxContentType:: COLOR_ALPHA, aContext=0x7ee01a28a0, aFlags=mozilla::gl::TextureImage::OriginBottomLeft, aTextureState=mozilla::gl::TextureImage::Created, aImageFormat=mozilla::gfx::SurfaceFormat::B8G8R8A8) at gfx/gl/TextureImageEGL.cpp:46 #1 0x0000007ff28d42e0 in mozilla::gl::TileGenFuncEGL ( gl=gl@entry=0x7ee01a28a0, aSize=..., aContentType=aContentType@entry=gfxContentType::COLOR_ALPHA, aFlags=aFlags@entry=mozilla::gl::TextureImage::OriginBottomLeft, aImageFormat=aImageFormat@entry=mozilla::gfx::SurfaceFormat::B8G8R8A8) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/cxxalloc.h:33 #2 0x0000007ff28b7ec8 in mozilla::gl::TileGenFunc (aImageFormat=mozilla::gfx:: SurfaceFormat::B8G8R8A8, aFlags=mozilla::gl::TextureImage::OriginBottomLeft, aContentType=gfxContentType::COLOR_ALPHA, aSize=..., gl=0x7ee01a28a0) at gfx/gl/GLTextureImage.cpp:52 #3 mozilla::gl::TiledTextureImage::Resize (this=this@entry=0x7ee01d7660, aSize=...) at gfx/gl/GLTextureImage.cpp:399 #4 0x0000007ff28b81cc in mozilla::gl::TiledTextureImage::TiledTextureImage ( this=0x7ee01d7660, aGL=0x7ee01a28a0, aSize=..., aContentType=<optimized out>, aFlags=<optimized out>, aImageFormat=<optimized out>) at gfx/gl/GLTextureImage.cpp:221 #5 0x0000007ff28d41f8 in mozilla::gl::CreateTextureImageEGL ( gl=gl@entry=0x7ee01a28a0, aSize=..., aContentType=aContentType@entry=gfxContentType::COLOR_ALPHA, aWrapMode=aWrapMode@entry=33071, aFlags=aFlags@entry=mozilla::gl::TextureImage::OriginBottomLeft, aImageFormat=aImageFormat@entry=mozilla::gfx::SurfaceFormat::B8G8R8A8) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/cxxalloc.h:33 #6 0x0000007ff28b8350 in mozilla::gl::CreateTextureImage ( gl=gl@entry=0x7ee01a28a0, aSize=..., aContentType=aContentType@entry=gfxContentType::COLOR_ALPHA, aWrapMode=aWrapMode@entry=33071, aFlags=aFlags@entry=mozilla::gl::TextureImage::OriginBottomLeft, aImageFormat=<optimized out>) at gfx/gl/GLTextureImage.cpp:30 #7 0x0000007ff294ec88 in mozilla::layers::TextureImageTextureSourceOGL::Update (this=0x7ee01c70f0, aSurface=0x7ee019b290, aDestRegion=0x0, aSrcOffset=0x0, aDstOffset=0x0) at ${PROJECT}/obj-build-mer-qt-xr/dist/ include/gfx2DGlue.h:70 #8 0x0000007ff2a43ea8 in mozilla::layers::BufferTextureHost::Upload ( this=this@entry=0x7ee01bb470, aRegion=<optimized out>) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/RefPtr.h:313 #9 0x0000007ff2a444e0 in mozilla::layers::BufferTextureHost::MaybeUpload ( this=this@entry=0x7ee01bb470, aRegion=<optimized out>) at gfx/layers/composite/TextureHost.cpp:1046 #10 0x0000007ff2a44808 in mozilla::layers::BufferTextureHost::UploadIfNeeded ( this=this@entry=0x7ee01bb470) at gfx/layers/composite/TextureHost.cpp:1031 #11 0x0000007ff2a44824 in mozilla::layers::BufferTextureHost::Lock ( this=0x7ee01bb470) at gfx/layers/composite/TextureHost.cpp:650 #12 0x0000007ff2a35d8c in mozilla::layers::ImageHost::Lock (this=0x7ee01b7c60) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/RefPtr.h:313 #13 0x0000007ff2a3621c in mozilla::layers::AutoLockCompositableHost:: AutoLockCompositableHost (aHost=0x7ee01b7c60, this=0x7f364e8ca0) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/RefPtr.h:313 #14 mozilla::layers::ImageHost::Composite (this=this@entry=0x7ee01b7c60, aCompositor=aCompositor@entry=0x7ee0002ed0, aLayer=aLayer@entry=0x7ee0265370, aEffectChain=..., aOpacity=1, aTransform=..., aSamplingFilter=<optimized out>, aClipRect=..., aVisibleRegion=aVisibleRegion@entry=0x0, aGeometry=...) at gfx/layers/composite/ImageHost.cpp:197 #15 0x0000007ff2a26d3c in mozilla::layers::CanvasLayerComposite::<lambda( mozilla::layers::EffectChain&, const IntRect&)>::operator() (clipRect=..., effectChain=..., __closure=<synthetic pointer>) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/MaybeStorageBase.h:50 #16 mozilla::layers::RenderWithAllMasks<mozilla::layers::CanvasLayerComposite:: RenderLayer(const IntRect&, const mozilla::Maybe<mozilla::gfx:: PolygonTyped<mozilla::gfx::UnknownUnits> >&)::<lambda(mozilla::layers:: EffectChain&, const IntRect&)> >(mozilla::layers::Layer *, mozilla::layers:: Compositor *, const mozilla::gfx::IntRect &, mozilla::layers:: CanvasLayerComposite::<lambda(mozilla::layers::EffectChain&, const IntRect&)>) (aLayer=aLayer@entry= 0x7ee0264f60, aCompositor=<optimized out>, aClipRect=..., aRenderCallback=aRenderCallback@entry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/layers/ LayerManagerCompositeUtils.h:69 #17 0x0000007ff2a27090 in mozilla::layers::CanvasLayerComposite::RenderLayer ( this=0x7ee0264f60, aClipRect=..., aGeometry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/RefPtr.h:289 #18 0x0000007ff2a32f88 in mozilla::layers::RenderLayers<mozilla::layers:: ContainerLayerComposite> (aContainer=aContainer@entry=0x7ee025d580, aManager=aManager@entry=0x7ee01a43a0, aClipRect=..., aGeometry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/Maybe.h:443 #19 0x0000007ff2a33e78 in mozilla::layers::ContainerRender<mozilla::layers:: ContainerLayerComposite> (aContainer=0x7ee025d580, aManager=0x7ee01a43a0, aClipRect=..., aGeometry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/gfx/BaseRect.h:53 #20 0x0000007ff2a33fc0 in mozilla::layers::ContainerLayerComposite::RenderLayer (this=<optimized out>, aClipRect=..., aGeometry=...) at gfx/layers/composite/ContainerLayerComposite.cpp:745 #21 0x0000007ff2a32f88 in mozilla::layers::RenderLayers<mozilla::layers:: ContainerLayerComposite> (aContainer=aContainer@entry=0x7ee01d0140, aManager=aManager@entry=0x7ee01a43a0, aClipRect=..., aGeometry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/Maybe.h:443 #22 0x0000007ff2a33e78 in mozilla::layers::ContainerRender<mozilla::layers:: ContainerLayerComposite> (aContainer=0x7ee01d0140, aManager=0x7ee01a43a0, aClipRect=..., aGeometry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/gfx/BaseRect.h:53 #23 0x0000007ff2a33fc0 in mozilla::layers::ContainerLayerComposite::RenderLayer (this=<optimized out>, aClipRect=..., aGeometry=...) at gfx/layers/composite/ContainerLayerComposite.cpp:745 #24 0x0000007ff2a32f88 in mozilla::layers::RenderLayers<mozilla::layers:: ContainerLayerComposite> (aContainer=aContainer@entry=0x7ee01b0d00, aManager=aManager@entry=0x7ee01a43a0, aClipRect=..., aGeometry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/Maybe.h:443 #25 0x0000007ff2a33e78 in mozilla::layers::ContainerRender<mozilla::layers:: ContainerLayerComposite> (aContainer=0x7ee01b0d00, aManager=0x7ee01a43a0, aClipRect=..., aGeometry=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/gfx/BaseRect.h:53 #26 0x0000007ff2a33fc0 in mozilla::layers::ContainerLayerComposite::RenderLayer (this=<optimized out>, aClipRect=..., aGeometry=...) at gfx/layers/composite/ContainerLayerComposite.cpp:745 #27 0x0000007ff2a1bc84 in mozilla::layers::LayerManagerComposite::<lambda(const IntRect&)>::operator()(const mozilla::gfx::IntRect &) const ( __closure=__closure@entry=0x7f364e98c8, aClipRect=...) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/MaybeStorageBase.h:50 #28 0x0000007ff2a30e68 in mozilla::layers::LayerManagerComposite::Render ( this=this@entry=0x7ee01a43a0, aInvalidRegion=..., aOpaqueRegion=...) at gfx/layers/composite/LayerManagerComposite.cpp:1237 #29 0x0000007ff2a3148c in mozilla::layers::LayerManagerComposite:: UpdateAndRender (this=this@entry=0x7ee01a43a0) at gfx/layers/composite/LayerManagerComposite.cpp:657 #30 0x0000007ff2a3183c in mozilla::layers::LayerManagerComposite:: EndTransaction (this=this@entry=0x7ee01a43a0, aTimeStamp=..., aFlags=aFlags@entry=mozilla::layers::LayerManager::END_DEFAULT) at gfx/layers/composite/LayerManagerComposite.cpp:572 #31 0x0000007ff2a72fbc in mozilla::layers::CompositorBridgeParent:: CompositeToTarget (this=0x7fc89b9920, aId=..., aTarget=0x0, aRect=<optimized out>) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/mozilla/RefPtr.h:313 #32 0x0000007ff4e07e38 in mozilla::embedlite::EmbedLiteCompositorBridgeParent:: CompositeToDefaultTarget (this=0x7fc89b9920, aId=...) at mobile/sailfishos/embedthread/EmbedLiteCompositorBridgeParent.cpp:160 #33 0x0000007ff2a58718 in mozilla::layers::CompositorVsyncScheduler::Composite ( this=0x7fc8bd6dd0, aVsyncEvent=...) at gfx/layers/ipc/CompositorVsyncScheduler.cpp:256 #34 0x0000007ff2a50b98 in mozilla::detail::RunnableMethodArguments<mozilla:: VsyncEvent>::applyImpl<mozilla::layers::CompositorVsyncScheduler, void ( mozilla::layers::CompositorVsyncScheduler::*)(mozilla::VsyncEvent const&), StoreCopyPassByConstLRef<mozilla::VsyncEvent>, 0ul> (args=..., m=<optimized out>, o=<optimized out>) at ${PROJECT}/obj-build-mer-qt-xr/dist/include/ nsThreadUtils.h:887 [...] #46 0x0000007fefbab89c in ?? () from /lib64/libc.so.6 (gdb)To prevent this becoming tiresome I'm going to skip the last backtrace, since it relates to the same TextureImageEGL::TextureImageEGL() call we've just seen.
That feels like plenty to be getting on with. Tomorrow I'll need to compare these backtraces with the working ESR 91 code to see whether it's possible to get to the same place or not and, if it is, what might have changed.
If you'd like to read any of my other gecko diary entries, they're all available on my Gecko-dev Diary page.
Comments
Uncover Disqus comments