Crash in mozilla::gfx::DrawTargetD2D1::IntoLuminanceSource

RESOLVED FIXED in Firefox 55

Status

()

defect
--
critical
RESOLVED FIXED
2 years ago
2 years ago

People

(Reporter: philipp, Assigned: mchang)

Tracking

({crash, regression})

55 Branch
mozilla56
x86
Windows
Points:
---
Dependency tree / graph
Bug Flags:
qe-verify -

Firefox Tracking Flags

(firefox-esr52 unaffected, firefox54 unaffected, firefox55 fixed, firefox56 fixed)

Details

(crash signature)

Attachments

(1 attachment, 1 obsolete attachment)

This bug was filed from the Socorro interface and is 
report bp-3c5f1fc4-cf0b-480a-8158-c726d0170621.
=============================================================
Crashing Thread (0)
Frame 	Module 	Signature 	Source
0 	xul.dll 	mozilla::gfx::DrawTargetD2D1::IntoLuminanceSource(mozilla::gfx::LuminanceType, float) 	gfx/2d/DrawTargetD2D1.cpp:125
1 	xul.dll 	nsSVGMaskFrame::GetMaskForMaskedFrame(nsSVGMaskFrame::MaskParams&) 	layout/svg/nsSVGMaskFrame.cpp:135
2 	xul.dll 	CreateAndPaintMaskSurface 	layout/svg/nsSVGIntegrationUtils.cpp:519
3 	xul.dll 	nsSVGIntegrationUtils::PaintMaskAndClipPath(nsSVGIntegrationUtils::PaintFramesParams const&) 	layout/svg/nsSVGIntegrationUtils.cpp:908
4 	xul.dll 	nsDisplayMask::PaintAsLayer(nsDisplayListBuilder*, nsRenderingContext*, mozilla::layers::LayerManager*) 	layout/painting/nsDisplayList.cpp:8542
5 	xul.dll 	mozilla::PaintInactiveLayer 	layout/painting/FrameLayerBuilder.cpp:3704
6 	xul.dll 	mozilla::FrameLayerBuilder::PaintItems(nsTArray<mozilla::FrameLayerBuilder::ClippedDisplayItem>&, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, gfxContext*, nsRenderingContext*, nsDisplayListBuilder*, nsPresContext*, mozilla::gfx::IntPointTyped<mozilla::gfx::UnknownUnits> const&, float, float, int) 	layout/painting/FrameLayerBuilder.cpp:6046
7 	xul.dll 	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:6235
8 	xul.dll 	mozilla::layers::BasicPaintedLayer::PaintThebes(gfxContext*, mozilla::layers::Layer*, 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/basic/BasicPaintedLayer.cpp:94
9 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp:714
10 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, 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/basic/BasicLayerManager.cpp:898
11 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp:737
12 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, 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/basic/BasicLayerManager.cpp:898
13 	xul.dll 	mozilla::layers::BasicLayerManager::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/basic/BasicLayerManager.cpp:622
14 	xul.dll 	nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsRenderingContext*, unsigned int) 	layout/painting/nsDisplayList.cpp:2288
15 	xul.dll 	nsLayoutUtils::PaintFrame(nsRenderingContext*, nsIFrame*, nsRegion const&, unsigned int, nsDisplayListBuilderMode, nsLayoutUtils::PaintFrameFlags) 	layout/base/nsLayoutUtils.cpp:3697
16 	xul.dll 	mozilla::PresShell::RenderDocument(nsRect const&, unsigned int, unsigned int, gfxContext*) 	layout/base/PresShell.cpp:4738
17 	xul.dll 	mozilla::image::SVGDrawingCallback::operator()(gfxContext*, gfxRect const&, mozilla::gfx::SamplingFilter, gfxMatrix const&) 	image/VectorImage.cpp:322
18 	xul.dll 	gfxCallbackDrawable::Draw(gfxContext*, gfxRect const&, mozilla::gfx::ExtendMode, mozilla::gfx::SamplingFilter, double, gfxMatrix const&) 	gfx/thebes/gfxDrawable.cpp:172
19 	xul.dll 	gfxUtils::DrawPixelSnapped(gfxContext*, gfxDrawable*, gfxSize const&, mozilla::image::ImageRegion const&, mozilla::gfx::SurfaceFormat, mozilla::gfx::SamplingFilter, unsigned int, double) 	gfx/thebes/gfxUtils.cpp:584
20 	xul.dll 	mozilla::image::imgFrame::InitWithDrawable(gfxDrawable*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::SurfaceFormat, mozilla::gfx::SamplingFilter, unsigned int, mozilla::gfx::BackendType) 	image/imgFrame.cpp:366
21 	xul.dll 	mozilla::image::VectorImage::CreateSurfaceAndShow(mozilla::image::SVGDrawingParameters const&, mozilla::gfx::BackendType) 	image/VectorImage.cpp:967
22 	xul.dll 	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:892
23 	xul.dll 	DrawImageInternal 	layout/base/nsLayoutUtils.cpp:6667
24 	xul.dll 	nsLayoutUtils::DrawSingleImage(gfxContext&, nsPresContext*, imgIContainer*, mozilla::gfx::SamplingFilter, nsRect const&, nsRect const&, mozilla::Maybe<mozilla::SVGImageContext> const&, unsigned int, nsPoint const*, nsRect const*) 	layout/base/nsLayoutUtils.cpp:6762
25 	xul.dll 	nsImageBoxFrame::PaintImage(nsRenderingContext&, nsRect const&, nsPoint, unsigned int) 	layout/xul/nsImageBoxFrame.cpp:379
26 	xul.dll 	nsDisplayXULImage::Paint(nsDisplayListBuilder*, nsRenderingContext*) 	layout/xul/nsImageBoxFrame.cpp:448
27 	xul.dll 	mozilla::FrameLayerBuilder::PaintItems(nsTArray<mozilla::FrameLayerBuilder::ClippedDisplayItem>&, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, gfxContext*, nsRenderingContext*, nsDisplayListBuilder*, nsPresContext*, mozilla::gfx::IntPointTyped<mozilla::gfx::UnknownUnits> const&, float, float, int) 	layout/painting/FrameLayerBuilder.cpp:6060
28 	xul.dll 	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:6219
29 	xul.dll 	mozilla::layers::ClientPaintedLayer::PaintThebes(nsTArray<mozilla::layers::ReadbackProcessor::Update>*) 	gfx/layers/client/ClientPaintedLayer.cpp:86
30 	xul.dll 	mozilla::layers::ClientPaintedLayer::RenderLayerWithReadback(mozilla::layers::ReadbackProcessor*) 	gfx/layers/client/ClientPaintedLayer.cpp:140
31 	xul.dll 	mozilla::layers::ClientContainerLayer::RenderLayer() 	gfx/layers/client/ClientContainerLayer.h:57
32 	xul.dll 	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:375
33 	xul.dll 	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:433
34 	xul.dll 	nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsRenderingContext*, unsigned int) 	layout/painting/nsDisplayList.cpp:2288
35 	xul.dll 	nsLayoutUtils::PaintFrame(nsRenderingContext*, nsIFrame*, nsRegion const&, unsigned int, nsDisplayListBuilderMode, nsLayoutUtils::PaintFrameFlags) 	layout/base/nsLayoutUtils.cpp:3697
36 	xul.dll 	mozilla::PresShell::Paint(nsView*, nsRegion const&, unsigned int) 	layout/base/PresShell.cpp:6447
37 	xul.dll 	nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*) 	view/nsViewManager.cpp:481
38 	xul.dll 	nsViewManager::ProcessPendingUpdatesForView(nsView*, bool) 	view/nsViewManager.cpp:413
39 	xul.dll 	nsViewManager::ProcessPendingUpdates() 	view/nsViewManager.cpp:1095

crash reports with this signature on windows seem to be regressing since bug 1359527.
Looks like the effect is failing to be created.
Assignee: nobody → mchang
Comment on attachment 8880452 [details] [diff] [review]
Fallback to DrawTarget::IntoLuminance if we can't create the effect

Review of attachment 8880452 [details] [diff] [review]:
-----------------------------------------------------------------

Yuck :) Can we gfxCritialError when this happens as we don't currently expect it but it does happen?
Attachment #8880452 - Flags: review?(jmuizelaar) → review+
Carrying r+, updated with gfxCriticalError
Attachment #8880452 - Attachment is obsolete: true
Attachment #8880471 - Flags: review+
Pushed by mchang@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/ad438ff29dff
Fallback to DrawTarget::IntoLuminance if we can't create the effect. r=jrmuizel
https://hg.mozilla.org/mozilla-central/rev/ad438ff29dff
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
i don't see any more crashes on nightly after build 20170626030209 - could you request uplift to beta as you deem fit?
Flags: needinfo?(mchang)
Comment on attachment 8880471 [details] [diff] [review]
Fallback to DrawTarget::IntoLuminance if we can't create the effect

Approval Request Comment
[Feature/Bug causing the regression]: bug 1359527
[User impact if declined]: Some users can crash if we can't create the effect.
[Is this code covered by automated tests?]: Yes
[Has the fix been verified in Nightly?]: Yes
[Needs manual test from QE? If yes, steps to reproduce]: No 
[List of other uplifts needed for the feature/fix]: None
[Is the change risky?]: No
[Why is the change risky/not risky?]: This is just a null check when we create the luminance effect.
[String changes made/needed]: None
Flags: needinfo?(mchang)
Attachment #8880471 - Flags: approval-mozilla-beta?
Comment on attachment 8880471 [details] [diff] [review]
Fallback to DrawTarget::IntoLuminance if we can't create the effect

crash fix for beta55
Attachment #8880471 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
(In reply to Mason Chang [:mchang] from comment #9)
> [Is this code covered by automated tests?]: Yes
> [Has the fix been verified in Nightly?]: Yes
> [Needs manual test from QE? If yes, steps to reproduce]: No 

Setting qe-verify- based on Mason's assessment on manual testing needs and the fact that this fix has automated coverage.
Flags: qe-verify-
See Also: → 1384929
You need to log in before you can comment on or make changes to this bug.