Closed Bug 1269892 Opened 8 years ago Closed 8 years ago

Crash in mozilla::layers::CompositorOGL::GetShaderConfigFor const

Categories

(Core :: Graphics: Layers, defect)

46 Branch
Unspecified
macOS
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla49
Tracking Status
firefox46 --- affected
firefox47 --- affected
firefox48 --- affected
firefox49 --- affected

People

(Reporter: philipp, Assigned: pchang)

Details

(Keywords: crash, Whiteboard: [gfx-noted])

Crash Data

Attachments

(1 file)

This bug was filed from the Socorro interface and is 
report bp-7be2b5f1-a3dc-4c21-97e1-5a18b2160409.
=============================================================
Crashing Thread (24)
Frame 	Module 	Signature 	Source
0 	XUL 	mozilla::layers::CompositorOGL::GetShaderConfigFor(mozilla::layers::Effect*, mozilla::layers::MaskType, mozilla::gfx::CompositionOp, bool, bool) const 	gfx/layers/opengl/CompositorOGL.cpp:871
1 	XUL 	mozilla::layers::CompositorOGL::DrawQuad(mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits, float> const&, mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits, float> const&, mozilla::layers::EffectChain const&, float, mozilla::gfx::Matrix4x4Typed<mozilla::gfx::UnknownUnits, mozilla::gfx::UnknownUnits> const&, mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits, float> const&) 	gfx/layers/opengl/CompositorOGL.cpp:1111
2 	XUL 	mozilla::layers::ImageHost::Composite(mozilla::layers::LayerComposite*, mozilla::layers::EffectChain&, float, mozilla::gfx::Matrix4x4Typed<mozilla::gfx::UnknownUnits, mozilla::gfx::UnknownUnits> const&, mozilla::gfx::Filter const&, mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits, float> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const*) 	gfx/layers/Compositor.h:320
3 	XUL 	mozilla::layers::ImageLayerComposite::RenderLayer(mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&) 	gfx/layers/composite/ImageLayerComposite.cpp:100
4 	XUL 	void mozilla::layers::RenderLayers<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::RenderTargetPixel> const&) 	gfx/layers/composite/ContainerLayerComposite.cpp:577
5 	XUL 	void mozilla::layers::ContainerRender<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&) 	gfx/layers/composite/ContainerLayerComposite.cpp:741
6 	XUL 	void mozilla::layers::RenderLayers<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::RenderTargetPixel> const&) 	gfx/layers/composite/ContainerLayerComposite.cpp:577
7 	XUL 	void mozilla::layers::ContainerRender<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&) 	gfx/layers/composite/ContainerLayerComposite.cpp:741
8 	XUL 	mozilla::layers::LayerManagerComposite::Render(mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&) 	gfx/layers/composite/LayerManagerComposite.cpp:920
9 	XUL 	mozilla::layers::LayerManagerComposite::UpdateAndRender() 	gfx/layers/composite/LayerManagerComposite.cpp:492
10 	XUL 	mozilla::layers::LayerManagerComposite::EndTransaction(mozilla::TimeStamp const&, mozilla::layers::LayerManager::EndTransactionFlags) 	gfx/layers/composite/LayerManagerComposite.cpp:414
11 	XUL 	mozilla::layers::CompositorParent::CompositeToTarget(mozilla::gfx::DrawTarget*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const*) 	gfx/layers/ipc/CompositorParent.cpp:1260
12 	XUL 	mozilla::layers::CompositorVsyncScheduler::Composite(mozilla::TimeStamp) 	gfx/layers/ipc/CompositorParent.cpp:653
13 	XUL 	MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask const&) 	ipc/chromium/src/base/message_loop.cc:364
14 	XUL 	MessageLoop::DoWork() 	ipc/chromium/src/base/message_loop.cc:459
15 	XUL 	base::MessagePumpDefault::Run(base::MessagePump::Delegate*) 	ipc/chromium/src/base/message_pump_default.cc:34
16 	XUL 	MessageLoop::Run() 	ipc/chromium/src/base/message_loop.cc:234
17 	XUL 	base::Thread::ThreadMain() 	ipc/chromium/src/base/thread.cc:172
18 	XUL 	ThreadFunc 	ipc/chromium/src/base/platform_thread_posix.cc:36
Ø 19 	libsystem_pthread.dylib 	libsystem_pthread.dylib@0x3c12 	
Ø 20 	libsystem_pthread.dylib 	libsystem_pthread.dylib@0x3b8f 	
Ø 21 	libsystem_pthread.dylib 	libsystem_pthread.dylib@0x1374 	
22 	XUL 	XUL@0x379f1f

this os x crash signature seems to be somewhat on the rise since 46.0 and subsequent pre-release builds.
TextureSourceOGL* source = texturedEffect->mTexture->AsSourceOGL() seems to be null. Incompatible texture source?
Well, we're reporting GL Layers- and WebGL- in different places, but we end up in compositor OGL, so I'd say somebody is not paying attention to needing to be in basic compositor?
Flags: needinfo?(nical.bugzilla)
Whiteboard: [gfx-noted]
https://crash-stats.mozilla.com/signature/?product=Firefox&signature=mozilla%3A%3Alayers%3A%3ACompositorOGL%3A%3AGetShaderConfigFor+const&_columns=date&_columns=version&_columns=app_notes&_columns=graphics_critical_error&page=1

(In reply to Milan Sreckovic [:milan] from comment #2)
> Well, we're reporting GL Layers- and WebGL- in different places, but we end
> up in compositor OGL

In most reports we are reporting GL layers + and GL Context+. Some reports have Webgl reported as both "+" and "-", not sure what this means.

Nothing in gfx critical notes in most cases, except one report with mentions to canvas 2d falling back to software. As far as I know we don't have an equivalent of windows device resets on Mac, right?

Interestingly they all seem to be on the same Intel chip (DeviceID: 0x0046), I haven't seen any entry for that device in GfxInfo.

These are recent OSX versions, so I am expecting that we want to use a GL compositor there (especially since BasicCompositor currently needs some kind of gl hackiness to present frames on OSX), not sure why we are seeing an incompatible TextureSource there but I expect that the unexpected backend is on the texture rather than the compositor.
Flags: needinfo?(nical.bugzilla)
Maybe we can put some more information when we get this null pointer, gfxDevCrash so that we keep getting the reports, but also handle the null pointer.
Flags: needinfo?(howareyou322)
Assignee: nobody → howareyou322
Flags: needinfo?(howareyou322)
I only see "GL Layers+" from the search link in comment 3 and I didn't find the device reset path for Mac. Therefore, I assume we didn't change compositor here and used compositorOGL from beginning. It's more likely we are seeing a texture with unexpected backend type. It is worth to dump the Name of texture source when AsSourceOGL return null.
Comment on attachment 8752740 [details]
MozReview Request: Bug 1269892 - Dump the name of TextureSource when fails to cast it as TextureSourceOGL, r?nical

https://reviewboard.mozilla.org/r/52758/#review49708

::: gfx/layers/composite/TextureHost.h:115
(Diff revision 1)
>  
>    /**
>     * Cast to a TextureSource for for each backend..
>     */
> -  virtual TextureSourceOGL* AsSourceOGL() { return nullptr; }
> +  virtual TextureSourceOGL* AsSourceOGL() {
> +    gfxCriticalNote << "Failed to cast " << Name() << "to a TextureSourceOGL";

nit: << " into a...
(add a space and "into" rather than "to")
Attachment #8752740 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8752740 [details]
MozReview Request: Bug 1269892 - Dump the name of TextureSource when fails to cast it as TextureSourceOGL, r?nical

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/52758/diff/1-2/
https://hg.mozilla.org/mozilla-central/rev/780163f83261
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla49
I just added more debug log to have more clues to check this issue, change to open and wait for new information.
Status: RESOLVED → REOPENED
Keywords: leave-open
Resolution: FIXED → ---
I don't see this crash recently. Close the case.
Status: REOPENED → RESOLVED
Closed: 8 years ago8 years ago
Resolution: --- → FIXED
Removing leave-open keyword from resolved bugs, per :sylvestre.
Keywords: leave-open
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: