Closed Bug 1089454 Opened 5 years ago Closed 5 years ago

crash in DrawingContext::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)

Categories

(Core :: Graphics, defect, critical)

36 Branch
All
Windows NT
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla38
Tracking Status
firefox35 - unaffected
firefox36 + wontfix
firefox37 + fixed
firefox38 --- fixed

People

(Reporter: jbecerra, Assigned: bas.schouten)

References

Details

(Keywords: crash, topcrash)

Crash Data

Attachments

(1 file)

This bug was filed from the Socorro interface and is 
report bp-2a766b3e-d81d-4511-aa32-f98512141020.
=============================================================

Currently a top crasher on nightly (36) at #7 in the rank. It's also in the list of explosive reports. Nearly all of these are reported on Windows 7 machines. The signature has been around for a while but the number of crashers started to increase with builds from 10/11 onwards.

There are three comments in the reports so far, and one of them mentions: "Crashes while installing ATI Catalyst drivers"

Correlations tab was empty.

More reports at: https://crash-stats.mozilla.com/report/list?product=Firefox&signature=DrawingContext%3A%3AFillRectangle%28D2D_RECT_F+const%2A%2C+ID2D1Brush%2A%29

0 	d2d1.dll 	DrawingContext::FillRectangle(D2D_RECT_F const*, ID2D1Brush*) 	
1 	d2d1.dll 	D2DDeviceContextBase<ID2D1HwndRenderTarget, ID2D1HwndRenderTarget, ID2D1DeviceContext>::FillRectangle(D2D_RECT_F const*, ID2D1Brush*) 	
2 	xul.dll 	mozilla::gfx::DrawTargetD2D1::FillRect(mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::Pattern const&, mozilla::gfx::DrawOptions const&) 	gfx/2d/DrawTargetD2D1.cpp
3 	xul.dll 	gfxContext::FillAzure(mozilla::gfx::Pattern const&, float) 	gfx/thebes/gfxContext.cpp
4 	xul.dll 	gfxContext::Fill(mozilla::gfx::Pattern const&) 	gfx/thebes/gfxContext.cpp
5 	xul.dll 	gfxContext::Fill() 	gfx/thebes/gfxContext.cpp
6 	xul.dll 	nsCSSRendering::PaintGradient(nsPresContext*, nsRenderingContext&, nsStyleGradient*, nsRect const&, nsRect const&, nsRect const&, mozilla::gfx::IntRectTyped<mozilla::CSSPixel> const&, nsSize const&) 	layout/base/nsCSSRendering.cpp
7 	xul.dll 	nsImageRenderer::Draw(nsPresContext*, nsRenderingContext&, nsRect const&, nsRect const&, nsRect const&, nsPoint const&, mozilla::gfx::IntRectTyped<mozilla::CSSPixel> const&) 	layout/base/nsCSSRendering.cpp
8 	xul.dll 	nsImageRenderer::DrawBackground(nsPresContext*, nsRenderingContext&, nsRect const&, nsRect const&, nsPoint const&, nsRect const&) 	layout/base/nsCSSRendering.cpp
9 	xul.dll 	nsCSSRendering::PaintBackgroundWithSC(nsPresContext*, nsRenderingContext&, nsIFrame*, nsRect const&, nsRect const&, nsStyleContext*, nsStyleBorder const&, unsigned int, nsRect*, int) 	layout/base/nsCSSRendering.cpp
10 	xul.dll 	nsCSSRendering::PaintBackground(nsPresContext*, nsRenderingContext&, nsIFrame*, nsRect const&, nsRect const&, unsigned int, nsRect*, int) 	layout/base/nsCSSRendering.cpp
11 	xul.dll 	nsDisplayBackgroundImage::PaintInternal(nsDisplayListBuilder*, nsRenderingContext*, nsRect const&, nsRect*) 	layout/base/nsDisplayList.cpp
12 	xul.dll 	nsDisplayBackgroundImage::Paint(nsDisplayListBuilder*, nsRenderingContext*) 	layout/base/nsDisplayList.cpp
13 	xul.dll 	mozilla::FrameLayerBuilder::PaintItems(nsTArray<mozilla::FrameLayerBuilder::ClippedDisplayItem>&, nsIntRect const&, gfxContext*, nsRenderingContext*, nsDisplayListBuilder*, nsPresContext*, nsIntPoint const&, float, float, int) 	layout/base/FrameLayerBuilder.cpp
14 	xul.dll 	mozilla::FrameLayerBuilder::DrawPaintedLayer(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*) 	layout/base/FrameLayerBuilder.cpp
15 	xul.dll 	mozilla::layers::BasicPaintedLayer::PaintThebes(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicPaintedLayer.cpp
16 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp
17 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicLayerManager.cpp
18 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp
19 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicLayerManager.cpp
20 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp
21 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicLayerManager.cpp
22 	xul.dll 	mozilla::layers::BasicLayerManager::EndTransactionInternal(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags) 	gfx/layers/basic/BasicLayerManager.cpp
23 	xul.dll 	nsSVGIntegrationUtils::PaintFramesWithEffects(nsRenderingContext*, nsIFrame*, nsRect const&, nsDisplayListBuilder*, mozilla::layers::LayerManager*) 	layout/svg/nsSVGIntegrationUtils.cpp
24 	xul.dll 	nsDisplaySVGEffects::PaintAsLayer(nsDisplayListBuilder*, nsRenderingContext*, mozilla::layers::LayerManager*) 	layout/base/nsDisplayList.cpp
25 	xul.dll 	mozilla::PaintInactiveLayer 	layout/base/FrameLayerBuilder.cpp
26 	xul.dll 	mozilla::FrameLayerBuilder::PaintItems(nsTArray<mozilla::FrameLayerBuilder::ClippedDisplayItem>&, nsIntRect const&, gfxContext*, nsRenderingContext*, nsDisplayListBuilder*, nsPresContext*, nsIntPoint const&, float, float, int) 	layout/base/FrameLayerBuilder.cpp
27 	xul.dll 	mozilla::FrameLayerBuilder::DrawPaintedLayer(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*) 	layout/base/FrameLayerBuilder.cpp
28 	xul.dll 	mozilla::layers::BasicPaintedLayer::PaintThebes(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicPaintedLayer.cpp
29 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp
30 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicLayerManager.cpp
31 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp
32 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicLayerManager.cpp
33 	xul.dll 	mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext&, gfxContext*) 	gfx/layers/basic/BasicLayerManager.cpp
34 	xul.dll 	mozilla::layers::BasicLayerManager::PaintLayer(gfxContext*, mozilla::layers::Layer*, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*) 	gfx/layers/basic/BasicLayerManager.cpp
35 	xul.dll 	mozilla::layers::BasicLayerManager::EndTransactionInternal(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags) 	gfx/layers/basic/BasicLayerManager.cpp
36 	xul.dll 	nsDisplayList::PaintForFrame(nsDisplayListBuilder*, nsRenderingContext*, nsIFrame*, unsigned int) 	layout/base/nsDisplayList.cpp
37 	xul.dll 	nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsRenderingContext*, unsigned int) 	layout/base/nsDisplayList.cpp
38 	xul.dll 	nsLayoutUtils::PaintFrame(nsRenderingContext*, nsIFrame*, nsRegion const&, unsigned int, unsigned int) 	layout/base/nsLayoutUtils.cpp
39 	xul.dll 	PresShell::RenderDocument(nsRect const&, unsigned int, unsigned int, gfxContext*) 	layout/base/nsPresShell.cpp
40 	xul.dll 	mozilla::image::SVGDrawingCallback::operator()(gfxContext*, gfxRect const&, GraphicsFilter const&, gfxMatrix const&) 	image/src/VectorImage.cpp
41 	xul.dll 	gfxCallbackDrawable::Draw(gfxContext*, gfxRect const&, bool, GraphicsFilter const&, double, gfxMatrix const&) 	gfx/thebes/gfxDrawable.cpp
42 	xul.dll 	gfxUtils::DrawPixelSnapped(gfxContext*, gfxDrawable*, gfxSize const&, mozilla::image::ImageRegion const&, mozilla::gfx::SurfaceFormat, GraphicsFilter, unsigned int, double) 	gfx/thebes/gfxUtils.cpp
43 	xul.dll 	mozilla::image::imgFrame::InitWithDrawable(gfxDrawable*, nsIntSize const&, mozilla::gfx::SurfaceFormat, GraphicsFilter, unsigned int) 	image/src/imgFrame.cpp
44 	xul.dll 	mozilla::image::VectorImage::CreateSurfaceAndShow(mozilla::image::SVGDrawingParameters const&) 	image/src/VectorImage.cpp
45 	xul.dll 	mozilla::image::VectorImage::Draw(gfxContext*, nsIntSize const&, mozilla::image::ImageRegion const&, unsigned int, GraphicsFilter, mozilla::Maybe<mozilla::SVGImageContext> const&, unsigned int) 	image/src/VectorImage.cpp
46 	xul.dll 	DrawImageInternal 	layout/base/nsLayoutUtils.cpp
47 	xul.dll 	nsLayoutUtils::DrawBackgroundImage(nsRenderingContext*, nsPresContext*, imgIContainer*, nsIntSize const&, GraphicsFilter, nsRect const&, nsRect const&, nsPoint const&, nsRect const&, unsigned int) 	layout/base/nsLayoutUtils.cpp
48 	xul.dll 	nsImageRenderer::Draw(nsPresContext*, nsRenderingContext&, nsRect const&, nsRect const&, nsRect const&, nsPoint const&, mozilla::gfx::IntRectTyped<mozilla::CSSPixel> const&) 	layout/base/nsCSSRendering.cpp
49 	xul.dll 	nsImageRenderer::DrawBackground(nsPresContext*, nsRenderingContext&, nsRect const&, nsRect const&, nsPoint const&, nsRect const&) 	layout/base/nsCSSRendering.cpp
50 	xul.dll 	nsCSSRendering::PaintBackgroundWithSC(nsPresContext*, nsRenderingContext&, nsIFrame*, nsRect const&, nsRect const&, nsStyleContext*, nsStyleBorder const&, unsigned int, nsRect*, int) 	layout/base/nsCSSRendering.cpp
51 	xul.dll 	nsCSSRendering::PaintBackground(nsPresContext*, nsRenderingContext&, nsIFrame*, nsRect const&, nsRect const&, unsigned int, nsRect*, int) 	layout/base/nsCSSRendering.cpp
52 	xul.dll 	nsDisplayBackgroundImage::PaintInternal(nsDisplayListBuilder*, nsRenderingContext*, nsRect const&, nsRect*) 	layout/base/nsDisplayList.cpp
53 	xul.dll 	nsDisplayBackgroundImage::Paint(nsDisplayListBuilder*, nsRenderingContext*) 	layout/base/nsDisplayList.cpp
54 	xul.dll 	mozilla::FrameLayerBuilder::PaintItems(nsTArray<mozilla::FrameLayerBuilder::ClippedDisplayItem>&, nsIntRect const&, gfxContext*, nsRenderingContext*, nsDisplayListBuilder*, nsPresContext*, nsIntPoint const&, float, float, int) 	layout/base/FrameLayerBuilder.cpp
55 	xul.dll 	mozilla::FrameLayerBuilder::DrawPaintedLayer(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*) 	layout/base/FrameLayerBuilder.cpp
56 	xul.dll 	mozilla::layers::ClientPaintedLayer::PaintThebes() 	gfx/layers/client/ClientPaintedLayer.cpp
57 	xul.dll 	mozilla::layers::ClientPaintedLayer::RenderLayerWithReadback(mozilla::layers::ReadbackProcessor*) 	gfx/layers/client/ClientPaintedLayer.cpp
58 	xul.dll 	mozilla::layers::ClientContainerLayer::RenderLayer() 	gfx/layers/client/ClientContainerLayer.h
59 	xul.dll 	mozilla::layers::ClientLayerManager::EndTransactionInternal(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags) 	gfx/layers/client/ClientLayerManager.cpp
60 	xul.dll 	mozilla::layers::ClientLayerManager::EndTransaction(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags) 	gfx/layers/client/ClientLayerManager.cpp
61 	xul.dll 	nsDisplayList::PaintForFrame(nsDisplayListBuilder*, nsRenderingContext*, nsIFrame*, unsigned int) 	layout/base/nsDisplayList.cpp
62 	xul.dll 	nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsRenderingContext*, unsigned int) 	layout/base/nsDisplayList.cpp
63 	xul.dll 	nsLayoutUtils::PaintFrame(nsRenderingContext*, nsIFrame*, nsRegion const&, unsigned int, unsigned int) 	layout/base/nsLayoutUtils.cpp
64 	xul.dll 	PresShell::Paint(nsView*, nsRegion const&, unsigned int) 	layout/base/nsPresShell.cpp
65 	xul.dll 	nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*) 	view/nsViewManager.cpp
66 	xul.dll 	nsViewManager::ProcessPendingUpdatesForView(nsView*, bool) 	view/nsViewManager.cpp
67 	xul.dll 	nsViewManager::WillPaintWindow(nsIWidget*) 	view/nsViewManager.cpp
68 	xul.dll 	nsView::WillPaintWindow(nsIWidget*) 	view/nsView.cpp
69 	xul.dll 	nsWindow::OnPaint(HDC__*, unsigned int) 	widget/windows/nsWindowGfx.cpp
70 	xul.dll 	nsWindow::ProcessMessage(unsigned int, unsigned __int64&, __int64&, __int64*) 	widget/windows/nsWindow.cpp
71 	xul.dll 	nsWindow::WindowProcInternal(HWND__*, unsigned int, unsigned __int64, __int64) 	widget/windows/nsWindow.cpp
72 	xul.dll 	CallWindowProcCrashProtected 	xpcom/base/nsCrashOnException.cpp
73 	xul.dll 	nsWindow::WindowProc(HWND__*, unsigned int, unsigned __int64, __int64) 	widget/windows/nsWindow.cpp
74 	user32.dll 	GetRealWindowOwner 	
75 	user32.dll 	UserCallWinProcCheckWow 	
76 	uxtheme.dll 	CPaintBuffer::_PaintTargetRect(tagRECT const&, HDC__*) 	
77 	user32.dll 	DispatchClientMessage 	
78 	xul.dll 	xul.dll@0xed8093 	
79 	user32.dll 	_fnDWORD 	
80 	xul.dll 	xul.dll@0xed8093 	
81 	user32.dll 	UserCallWinProcCheckWow 	
82 	ntdll.dll 	KiUserCallbackDispatcher 	
83 	nss3.dll 	PR_IntervalToMilliseconds 	nsprpub/pr/src/misc/prinrval.c
84 	xul.dll 	mozilla::Telemetry::TimeHistogram::Add(unsigned int) 	toolkit/components/telemetry/Telemetry.cpp
[Tracking Requested - why for this release]:
Assignee: nobody → bas
Status: NEW → ASSIGNED
Duplicate of this bug: 1089461
Duplicate of this bug: 1089458
User comments from the duplicate bug 1089458 comment 4:
> In my eventlog I see a warning that nvlddmkm (a kernel mode driver component
> of my Nvidia Driver) crashed and was restored.
> I remember that I was using a Bing 3d Maps when the screen flickered and the
> driver crashed.
> 
> Upon switching back to Firefox I got this crash.
> 
> If this is really related, then I think Firefox should recover gracefully
> from a failed video device driver.
> BTW E10s was enabled.
Crash Signature: [@ DrawingContext::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)] → [@ DrawingContext::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)] [@ D2DDeviceContextBase<ID2D1DeviceContext1, ID2D1DeviceContext1, null_type>::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)] [@ d2d1.dll@0x847d7]
Just to clarify the user story from comment 4:
I used the windows 8.1 Bing 3D Maps preview App,(http://apps.microsoft.com/windows/en-us/app/bing-maps-preview/75ce2a6a-8a25-4916-83d0-19b8e7b60787)

My guess is that any any app that makes the video driver fail, may ultimately lead to this issue.
[Tracking Requested - why for this release]:
This is now ~7% of all crashes on Aurora 35.
Just an Update to Comment # 5 my video card is a Nvidia GForce GTS 360M running Nivida Driver 9.18.13.4052 (in Properties of driver) Gforce Experience displays it as  V 340.52.
In each of the instances that I observed this crash I do have a corresponding message in Eventlog that Nvlddmk "Display driver stopped responding and has recovered."
If you search in google, for nvlddmk then you will find all sorts of reports and steps to avoid it.
.
Looking through the bug reports Nightly always crashes with some graphic related code (createBitmap, createTexture, ... ) so I guess that we are using a context/handle/memory  from the video driver that is invalid.
The driver crashed and was restarted and thus it is not surprising that the display context has become invalid, the surprizing thing is that this lowlevel driver issue boils up and makes an application (Firefox) crash. 

Researching:
The event log Message I see is from TDR a way to restart the video driver, MS InfoPage
http://msdn.microsoft.com/en-us/Library/Windows/Hardware/ff570087%28v=vs.85%29.aspx
Windows 8 introduced some changes to TDR, which seem to make it more likely to happen, which may explain why we see more crashes of this type. See
http://msdn.microsoft.com/en-us/Library/Windows/Hardware/jj676805%28v=vs.85%29.aspx

An explanation of that feature and a description of what happens to a system after TDR restarted the driver can be found here:
https://forums.geforce.com/default/topic/413110/geforce-drivers/the-nvlddmkm-error-what-is-it-an-fyi-for-those-seeing-this-issue/

I think the relevant part from the link above is:
>
3. Desktop recovery:

The operating system resets the appropriate state of the graphics stack. The video memory manager, which is also part of Dxgkrnl.sys, purges all allocations from video memory. The display miniport driver resets the GPU hardware state. The graphics stack takes the final actions and restores the desktop to the responsive state. As previously mentioned, some legacy DirectX applications might render just black at the end of this recovery, which requires the end user to restart these applications. Well-written DirectX 9Ex and DirectX 10 and later applications that handle Device Remove technology continue to work correctly. An application must release and then recreate its Direct3D device and all of the device's objects. For more information about how DirectX applications recover, see the Windows SDK.
<

Could this be the root cause? Firefox not handling Device Remove properly?
I have looked at the crashreports from comment 1 ( https://crash-stats.mozilla.com/report/list?product=Firefox&signature=DrawingContext%3A%3AFillRectangle%28D2D_RECT_F+const%2A%2C+ID2D1Brush%2A%29 ) and have found that that the graphics driver is not from NVIDIA, but from ATI for many of the crashes. 
This too supports my argument from comment 7.

David what do you think?
Flags: needinfo?(dmajor)
I have somewhat of an idea what might be causing this. I bet that this happens when the video driver crashes and we get a gradient from the gradient cache and try to draw with that. The question is why this is new with Direct2D 1.1.
Reply to comment 9, Bas,
I'v tried to understand what an application needs to do with with respect to the quote in comment 7, I have yet to see or find an example of how this should work.
And I'v tried to locate the code doing the initialization for video output in firefox, since I think thats where the registration for a Device Remove event needs to happen.

I think this just happens more frequently (and is annoying lots of Firefox users out there) due to the changes in Windows 8(.1) TDR.
Nvidia is higher than average but I don't think this is specific to one vendor.

Rank 	Adapter vendor id 	Count 	%
1 	0x10de 	277 	60.88 %
2 	0x8086 	89 	19.56 %
3 	0x1002 	89 	19.56 %
Flags: needinfo?(dmajor)
David I agree, seems to happen when Windows TDR restarts any video driver, not just nvidia.
Blocks: 1096846
Crash Signature: [@ DrawingContext::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)] [@ D2DDeviceContextBase<ID2D1DeviceContext1, ID2D1DeviceContext1, null_type>::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)] [@ d2d1.dll@0x847d7] → [@ DrawingContext::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)] [@ DrawingContext::FillGeometry(ID2D1Geometry*, ID2D1Brush*, ID2D1Brush*) ] [@ D2DDeviceContextBase<ID2D1DeviceContext1, ID2D1DeviceContext1, null_type>::FillRectangle(D2D_RECT_F const*, …
Crash Signature: , ID2D1Brush*)] [@ d2d1.dll@0x847d7] → , ID2D1Brush*)] [@ D2DDeviceContextBase<ID2D1DeviceContext, ID2D1DeviceContext, null_type>::DrawImage(ID2D1Image*, D2D_POINT_2F const*, D2D_RECT_F const*, D2D1_INTERPOLATION_MODE, D2D1_COMPOSITE_MODE) ] [@ d2d1.dll@0x847d7]
Blocks: 902952
Now that we've disabled D2D1.1 on FF35 in bug 1095608, this shouldn't be affected that branch.  Leaving tracking for 36 and higher.
I just got this on nightly during an nvidia driver update: bp-709e3901-8d80-4a68-b275-8cdb52150117
bas, this is one of the top issue in 36 beta. Do you have plan for this? (or we can disable D2D1.1) thanks
Flags: needinfo?(bas)
(In reply to Sylvestre Ledru [:sylvestre] from comment #15)
> bas, this is one of the top issue in 36 beta. Do you have plan for this? (or
> we can disable D2D1.1) thanks

I highly suspect this is just a signature consolidating several smaller crash signatures when using D2D 1.0, since current release simply always crashes when you update your drivers or get a TDR (which afaiui is when this crash occurs). Having said that we're in the process of addressing the TDR issues. But I -very- much doubt this is a regression in total crashes.
Flags: needinfo?(bas)
Comment on attachment 8555353 [details] [diff] [review]
Prevent usage of incompatible graphics objects after a device reset

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

Not a huge fan. Not much choice though.
Attachment #8555353 - Flags: review?(jmuizelaar) → review+
https://hg.mozilla.org/mozilla-central/rev/d0c5e3607389
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
Bas, is this a difficult uplift?
Flags: needinfo?(bas)
Comment on attachment 8555353 [details] [diff] [review]
Prevent usage of incompatible graphics objects after a device reset

Approval Request Comment
[Feature/regressing bug #]: Not a regression
[User impact if declined]: Crashes during driver reset
[Describe test coverage new/current, TreeHerder]: Extensive nightly coverage
[Risks and why]: Fairly low
[String/UUID change made/needed]: None
Flags: needinfo?(bas)
Attachment #8555353 - Flags: approval-mozilla-aurora?
Comment on attachment 8555353 [details] [diff] [review]
Prevent usage of incompatible graphics objects after a device reset

Taking this topcrash fix on Aurora.

Bas - 36 is marked as affected as well. What do you think about uplifting this fix to Beta?
Flags: needinfo?(bas)
Attachment #8555353 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
(In reply to Lawrence Mandel [:lmandel] (use needinfo) from comment #22)
> Comment on attachment 8555353 [details] [diff] [review]
> Prevent usage of incompatible graphics objects after a device reset
> 
> Taking this topcrash fix on Aurora.
> 
> Bas - 36 is marked as affected as well. What do you think about uplifting
> this fix to Beta?

There's no value. Beta crashes under the circumstances that cause this crash anyway (it doesn't have the other work that makes us be able to survive a TDR). We'd be taking away this crash, but we'd just cause a number of smaller crash signatures to come in its place. It would only cause crash stats to be more misleading and confusing, at least this crash signature consolidates a lot of the TDR related crashes into one statistic.
Flags: needinfo?(bas)
Thanks for the details Bas. Do you think we have any option other than living with this new topcrash in 36?
Flags: needinfo?(bas)
(In reply to Lawrence Mandel [:lmandel] (use needinfo) from comment #25)
> Thanks for the details Bas. Do you think we have any option other than
> living with this new topcrash in 36?

It's already a crash on 35 (just with a different signature), it's fixed in 37, but the patches to fix it are complicated and I would be very hesitant to upload such a complex set of work to beta. Those patches were just meant to ride the trains as we're not actually fixing a regression here.
Flags: needinfo?(bas)
Given Bas' feedback in comment 26, I'm setting 36 as wontfix.
I encountered this crash https://crash-stats.mozilla.com/report/index/ccb67422-af23-43fc-960f-915862150401 during my testing around loop tab share, on Firefox 38 Beta 1 (20150330154247) using Windows 8.1 32bit.
This crash on FF 38 beta3
Still crashing (Firefox 38.0b9).

d2d1.dll
D2DDeviceContextBase<ID2D1DeviceContext1, ID2D1DeviceContext1, null_type>::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)
(In reply to Stas from comment #31)
> Still crashing (Firefox 38.0b9).
> 
> d2d1.dll
> D2DDeviceContextBase<ID2D1DeviceContext1, ID2D1DeviceContext1,
> null_type>::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)

Please comment on bug 1154003 :).
(In reply to Stas from comment #31)
> Still crashing (Firefox 38.0b9).
> 
> d2d1.dll
> D2DDeviceContextBase<ID2D1DeviceContext1, ID2D1DeviceContext1,
> null_type>::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)

Could you also send us your exact crash report?
I can't find any crashes like this anymore, please reopen if I'm wrong.
Flags: needinfo?(bas)
You need to log in before you can comment on or make changes to this bug.