Closed Bug 812776 Opened 12 years ago Closed 12 years ago

crash in nsCSSRendering::PrepareBackgroundLayer @ nsIFrame::GetStyleVisibility

Categories

(Core :: Layout, defect)

19 Branch
x86
Windows 7
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla19
Tracking Status
firefox18 + verified
firefox19 --- verified

People

(Reporter: scoobidiver, Assigned: roc)

References

Details

(Keywords: crash, regression, topcrash, Whiteboard: [qa?])

Crash Data

Attachments

(1 file)

With that stack trace, it first showed up in 19.0a1/20121107 and is #21 top crasher in 19.0a1. The regression window is:
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=f9c2c266e7aa&tochange=e587aa26326e
It might be a regression from bug 798964.

Signature 	nsIFrame::GetStyleVisibility() More Reports Search
UUID	3b999546-e411-419e-a590-ae0512121116
Date Processed	2012-11-16 07:36:22
Uptime	1634
Last Crash	1.7 weeks before submission
Install Age	13.0 hours since version was first installed.
Install Time	2012-11-15 17:34:35
Product	Firefox
Version	19.0a1
Build ID	20121115030705
Release Channel	nightly
OS	Windows NT
OS Version	6.1.7601 Service Pack 1
Build Architecture	x86
Build Architecture Info	AuthenticAMD family 16 model 4 stepping 3
Crash Reason	EXCEPTION_ACCESS_VIOLATION_READ
Crash Address	0xfffffffff0de8037
App Notes 	
AdapterVendorID: 0x10de, AdapterDeviceID: 0x0ca3, AdapterSubsysID: 00000000, AdapterDriverVersion: 8.16.11.9107
D3D10 Layers? D3D10 Layers- D3D9 Layers? D3D9 Layers- 
Processor Notes 	This dump is too long and has triggered the automatic truncation routine
EMCheckCompatibility	True
Adapter Vendor ID	0x10de
Adapter Device ID	0x0ca3
Total Virtual Memory	2147352576
Available Virtual Memory	1732386816
System Memory Use Percentage	36
Available Page File	3159334912
Available Physical Memory	1356132352

Frame 	Module 	Signature 	Source
0 	xul.dll 	nsIFrame::GetStyleVisibility 	layout/style/nsStyleStructList.h:61
1 	xul.dll 	nsCSSRendering::PrepareBackgroundLayer 	layout/base/nsCSSRendering.cpp:2837
2 	xul.dll 	nsDisplayBackground::GetBounds 	layout/base/nsDisplayList.cpp:2160
3 	xul.dll 	nsOverflowClipWrapper::WrapList 	layout/generic/nsFrame.cpp:1659
4 	xul.dll 	nsDisplayWrapper::WrapListsInPlace 	layout/base/nsDisplayList.cpp:2725
5 	xul.dll 	nsIFrame::OverflowClip 	layout/generic/nsFrame.cpp:1714
6 	xul.dll 	nsGfxScrollFrameInner::BuildDisplayList 	layout/generic/nsGfxScrollFrame.cpp:2166
7 	xul.dll 	nsHTMLScrollFrame::BuildDisplayList 	layout/generic/nsGfxScrollFrame.h:374
8 	xul.dll 	nsIFrame::BuildDisplayListForChild 	layout/generic/nsFrame.cpp:2288
9 	xul.dll 	nsBlockFrame::BuildDisplayList 	layout/generic/nsBlockFrame.cpp:6188
10 	xul.dll 	nsIFrame::BuildDisplayListForStackingContext 	layout/generic/nsFrame.cpp:1938
11 	xul.dll 	nsIFrame::BuildDisplayListForChild 	layout/generic/nsFrame.cpp:2262
12 	xul.dll 	nsBlockFrame::BuildDisplayList 	layout/generic/nsBlockFrame.cpp:6188
...

More reports at:
https://crash-stats.mozilla.com/report/list?signature=nsIFrame%3A%3AGetStyleVisibility%28%29
> It might be a regression from bug 798964.

Yeah, seems likely.  Frame #2 above is in code added in that bug.
http://hg.mozilla.org/mozilla-central/annotate/a761bfc192b5/layout/base/nsDisplayList.cpp#l2160
Blocks: 798964
I think the problem is that we're calling methods on InlineBackgroundData (via nsCSSRendering::ComputeBackgroundPositioningArea/PrepareBackgroundLayer, via nsDisplayBackgroundImage::GetBounds) which set up cached frame pointers, and later we delete those frames, or at least mBlockFrame. Then a later call to ComputeBackgroundPositioningArea tries to use the cached mBlockFrame and dies.

Before, we tried to prevent this sort of thing by calling InlineBackgroundData::Reset after painting (via nsCSSRendering::DidPaint), because we "knew" that PrepareBackgroundLayer was only called during painting and was always followed by a call to DidPaint before any frames could be destroyed. That worked but that invariant is too fragile to rely on anymore.
Attached patch fixSplinter Review
Assignee: nobody → roc
Attachment #683014 - Flags: review?(matt.woodrow)
Attachment #683014 - Flags: review?(matt.woodrow) → review+
roc, this is marked as not affecting 18, but you nominated for there, does that mean it actually is affected and we should uplift?
https://hg.mozilla.org/mozilla-central/rev/36fcf82a515b
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla19
Comment on attachment 683014 [details] [diff] [review]
fix

[Approval Request Comment]
Bug caused by (feature/regressing bug #): 798964
User impact if declined: Some amount of crashes due to regression in bug 798964 which just landed in FF18
Testing completed (on m-c, etc.): none really
Risk to taking this patch (and alternatives if risky): This is low risk. It's easy to see that we just call gInlineBGData->Reset() strictly more often, which is completely safe.
String or UUID changes made by this patch: none
Attachment #683014 - Flags: approval-mozilla-beta?
(In reply to Robert Kaiser (:kairo@mozilla.com) from comment #6)
> roc, this is marked as not affecting 18, but you nominated for there, does
> that mean it actually is affected and we should uplift?

Yes. It only just started affecting FF18 because we landed bug 798964 there (which we had to do)
Comment on attachment 683014 [details] [diff] [review]
fix

[Triage Comment]
While this isn't a top crash, it is a new crash regression. We're early enough in the cycle to land a fix of this nature. Approving for Beta 18.
Attachment #683014 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
(In reply to Ioana Budnar [QA] from comment #12)
> This crash is still reproducing on Firefox 18 beta 1 - 20121121075611
It's indeed #14 top browser crasher in this build.

> Are there any chances this fix didn't get in that build?
The patch landed in 18.0b1: http://hg.mozilla.org/releases/mozilla-beta/pushloghtml?startdate=2012-11-20&enddate=2012-11-22
(In reply to Ioana Budnar [QA] from comment #12) 
> Are there any chances this fix didn't get in that build?
Bug 798964 that caused this regression hasn't landed yet in 18.0 Beta so it could be the reason why there are still crashes despite the fix.
QA Contact: ioana.budnar
There are still a lot of new crashes with this signature and bug 798964 is not tracked for Fx18:
https://crash-stats.mozilla.com/report/list?query_search=signature&query_type=contains&reason_type=contains&range_value=4&range_unit=weeks&hang_type=any&process_type=any&signature=nsIFrame%3A%3AGetStyleVisibility%28%29.

Robert, please let me know if there is any other way QA can verify that this bug is fixed.
Whiteboard: [qa?]
(In reply to Scoobidiver from comment #13)
> > Are there any chances this fix didn't get in that build?
> The patch landed in 18.0b1:
I was wrong. The patch landed in 18.0b2. See http://hg.mozilla.org/releases/mozilla-beta/graph/117384?revcount=480

(In reply to Ioana Budnar [QA] from comment #15)
> There are still a lot of new crashes with this signature
I see only seven crashes in 18.0b2.
This crash is still ocurring - there are 12 crashes on 19 beta by now.
Scoobidiver, any thoughts on comment 17?
(In reply to Anthony Hughes, Mozilla QA (:ashughes) from comment #18)
> Scoobidiver, any thoughts on comment 17?
Remaining crashes with that signature are unrelated to this bug as their stack trace contains AnyTablePartHasBorderOrBackground and not nsCSSRendering::PrepareBackgroundLayer. In addition, it's a very low volume.
Marking this verified based on comment 19. Please add the verifyme keyword if there's something you'd like QA to check further.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: