Closed
Bug 1191532
Opened 10 years ago
Closed 9 years ago
Crash spike on yahoo.com in mozilla::FrameLayerBuilder::BuildContainerLayerFor(nsDisplayListBuilder*, mozilla::layers::LayerManager*, nsIFrame*, nsDisplayItem*, nsDisplayList*, mozilla::ContainerLayerParameters const&,
Categories
(Core :: SVG, defect)
Tracking
()
RESOLVED
FIXED
| Tracking | Status | |
|---|---|---|
| firefox42 | --- | affected |
People
(Reporter: away, Unassigned)
Details
(Keywords: crash)
Crash Data
This bug was filed from the Socorro interface and is
report bp-8d00ab04-ee30-4243-8ab3-7955b2150731.
=============================================================
According to the explosiveness reports, this signature shot up dramatically yesterday. https://crash-analysis.mozilla.com/rkaiser/2015-08-04/2015-08-04.firefox.39.explosiveness.html
User comments and URLs all point to yahoo.com. Perhaps they pushed out an update yesterday?
0 xul.dll mozilla::FrameLayerBuilder::BuildContainerLayerFor(nsDisplayListBuilder*, mozilla::layers::LayerManager*, nsIFrame*, nsDisplayItem*, nsDisplayList*, mozilla::ContainerLayerParameters const&, mozilla::gfx::Matrix4x4 const*, unsigned int) layout/base/FrameLayerBuilder.cpp
1 xul.dll nsDisplaySVGEffects::BuildLayer(nsDisplayListBuilder*, mozilla::layers::LayerManager*, mozilla::ContainerLayerParameters const&) layout/base/nsDisplayList.cpp
2 xul.dll mozilla::FrameLayerBuilder::AddPaintedDisplayItem(mozilla::PaintedLayerData*, nsDisplayItem*, mozilla::DisplayItemClip const&, mozilla::ContainerState&, mozilla::LayerState, nsPoint const&) layout/base/FrameLayerBuilder.cpp
3 xul.dll mozilla::ContainerState::PopPaintedLayerData() layout/base/FrameLayerBuilder.cpp
4 xul.dll mozilla::ContainerState::Finish(unsigned int*, mozilla::LayerManagerData*, nsIntRect const&, nsDisplayList*, bool&) layout/base/FrameLayerBuilder.cpp
5 xul.dll mozilla::FrameLayerBuilder::BuildContainerLayerFor(nsDisplayListBuilder*, mozilla::layers::LayerManager*, nsIFrame*, nsDisplayItem*, nsDisplayList*, mozilla::ContainerLayerParameters const&, mozilla::gfx::Matrix4x4 const*, unsigned int) layout/base/FrameLayerBuilder.cpp
Adding the other exploding signatures as they also appear to be correlated with Yahoo URLs.
Crash Signature: [@ mozilla::FrameLayerBuilder::BuildContainerLayerFor(nsDisplayListBuilder*, mozilla::layers::LayerManager*, nsIFrame*, nsDisplayItem*, nsDisplayList*, mozilla::ContainerLayerParameters const&, mozilla::gfx::Matrix4x4 const*, unsigned int)] → [@ mozilla::FrameLayerBuilder::BuildContainerLayerFor(nsDisplayListBuilder*, mozilla::layers::LayerManager*, nsIFrame*, nsDisplayItem*, nsDisplayList*, mozilla::ContainerLayerParameters const&, mozilla::gfx::Matrix4x4 const*, unsigned int)]
[@ mozilla::l…
I should clarify that these are on the Yahoo front page, not on search results.
Comment 4•10 years ago
|
||
Yup, submitted to Yahoo product team and asked about yahoo.com vs. SERPs.
Flags: needinfo?(kev)
Comment 5•10 years ago
|
||
Is nsDisplaySVGEffects always the second frame? This looks like it could be SVG-specific.
Flags: needinfo?(dmajor)
Comment 6•10 years ago
|
||
Yahoo's happy to investigate further with us; is there someone who can take point on helping identify/troubleshoot the root cause?
(In reply to Benjamin Smedberg [:bsmedberg] from comment #5)
> Is nsDisplaySVGEffects always the second frame? This looks like it could be SVG-specific.
Yes, that appears to be the case.
roc: aManager->GetLayerBuilder() is null at nsDisplaySVGEffects::BuildLayer. Any idea what could cause that?
Flags: needinfo?(dmajor) → needinfo?(roc)
Updated•10 years ago
|
Component: Graphics → SVG
Flags: needinfo?(jwatt)
That should never happen... FrameLayerBuilder::AddPaintedDisplayItem sets the FrameLayerBuilder on tempManager via FrameLayerBuilder::Init called here:
FrameLayerBuilder* layerBuilder = new FrameLayerBuilder();
layerBuilder->Init(mDisplayListBuilder, tempManager, aLayerData);
It's only a small amount of code from there to where we call aItem->BuildLayer:
tempManager->BeginTransaction();
if (mRetainingManager) {
layerBuilder->DidBeginRetainedLayerTransaction(tempManager);
}
UniquePtr<LayerProperties> props(LayerProperties::CloneFrom(tempManager->GetRoot()));
nsRefPtr<Layer> tmpLayer =
aItem->BuildLayer(mDisplayListBuilder, tempManager, ContainerLayerParameters());
I do not see how the gLayerManagerLayerBuilder user-data on tempManager could have been cleared along that path. The body of nsDisplaySVGEffects::BuildLayer also looks innocuous.
How much data do you have in the crash dump? Does tempManager still look like a valid LayerManager in general?
Can we add a patch on some branch with assertions to narrow this down? If so then we can sprinkle release-asserts along the path in FrameLayerBuilder::AddPaintedDisplayItem asserting that the layer manager's GetLayerBuilder is still valid (or at least not null). Inside nsDisplaySVGEffects::BuildLayer we can assert !aManager->IsInactiveLayerManager() || aManager->GetLayerBuilder().
Flags: needinfo?(roc)
After reading those codepaths I agree that this looks highly questionable. But I went through the disassembly again and |this| is definitely null in BuildContainerLayerFor.
The crash reports don't have heap contents so I don't know anything about tempManager. At this point I support the idea of diagnostic patches.
Comment 10•10 years ago
|
||
Kev, needinfo'ing you about following up with Yahoo about whether the subsequent drop in these crashes may have been due to a change they made.
Flags: needinfo?(jwatt)
Updated•10 years ago
|
Flags: needinfo?(kev)
Comment 11•10 years ago
|
||
Not sure, if it is correlated ...
... but pretty sure, that I wasn't on Yahoo ...
[@ mozilla::layers::LayerManagerUserDataDestroy ]
https://crash-stats.mozilla.com/report/index/2b5a59b0-fdcd-4e4d-b149-f001b2150909
Crashing Thread:
Frame Module Signature Source
0 xul.dll mozilla::layers::LayerManagerUserDataDestroy gfx/layers/Layers.h
1 @0x6e6f6974616368
OS: Windows NT → Windows
Hardware: x86 → All
Updated•10 years ago
|
Crash Signature: , unsigned int)]
[@ mozilla::layers::LayerManagerUserDataDestroy]
[@ mozilla::FrameLayerBuilder::Init(nsDisplayListBuilder*, mozilla::layers::LayerManager*, mozilla::PaintedLayerData*, mozilla::ContainerState*)] → , unsigned int)]
[@ mozilla::layers::LayerManagerUserDataDestroy]
[@ mozilla::FrameLayerBuilder::Init(nsDisplayListBuilder*, mozilla::layers::LayerManager*, mozilla::PaintedLayerData*, mozilla::ContainerState*)]
[@ mozilla::FrameLayerBuilder::BuildCont…
Comment 12•9 years ago
|
||
Closing this out. Yahoo did make changes because of the reported issue. Sorry I never cleaned this out.
Status: NEW → RESOLVED
Closed: 9 years ago
Flags: needinfo?(kev)
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•