Closed
Bug 967989
Opened 12 years ago
Closed 11 years ago
Faulty: main process hang with main thread stuck in PCompositorChild::SendFlushRendering after non-fatal assert failures "aChild already in the tree" and "aChild already has siblings?"
Categories
(Core :: Graphics: Layers, defect)
Tracking
()
RESOLVED
FIXED
mozilla30
Tracking | Status | |
---|---|---|
firefox30 | --- | fixed |
People
(Reporter: bjacob, Assigned: bjacob)
References
(Blocks 1 open bug)
Details
Attachments
(3 files)
43.33 KB,
text/plain
|
Details | |
64.17 KB,
text/plain
|
Details | |
1.14 KB,
patch
|
Details | Diff | Splinter Review |
Found by Christoph Diehl's "Faulty" fuzzer, see bug 777067
Hit while running css-gradients reftest.
Comment 1•12 years ago
|
||
The log has these just before the hang:
[Parent 3649] ###!!! ASSERTION: aChild already in the tree: '!aChild->GetParent()', file /hack/mozilla-central/gfx/layers/Layers.cpp, line 724
[Parent 3649] ###!!! ASSERTION: aChild already has siblings?: '!aChild->GetNextSibling() && !aChild->GetPrevSibling()', file /hack/mozilla-central/gfx/layers/Layers.cpp, line 726
This implies a bad layer tree is being built, in which case it's totally expected that UpdatePanZoomControllerTree will go off into the weeds and never come back. We should track down why those assertions are getting tripped.
There was a similar issue recently in bug 950301 (see comment 15 there) where a bad layer tree was being built and causing an infinite loop in UpdatePanZoomControllerTree. The reason it happens there rather than other places is because we walk the tree backwards which other code doesn't do, so we exercise a different set of links than most.
Component: Graphics → Graphics: Layers
Assignee | ||
Comment 2•12 years ago
|
||
If failure of these assertions can lead to hangs, would it then be reasonable to make these assertions fatal, so we can more easily understand why they fail?
Flags: needinfo?(roc)
Assignee | ||
Comment 3•12 years ago
|
||
Actually, I just reproduced a similar hang, still with the main thread stuck in PCompositorChild::SendFlushRendering, still just after failing these assertions, but now the compositor thread is in a different place, probably meaning that APZC is a red herring. Attaching new session...
Assignee | ||
Comment 4•12 years ago
|
||
Assignee | ||
Updated•12 years ago
|
Summary: Faulty: main process hang with main thread stuck in PCompositorChild::SendFlushRendering and compositor thread in APZCTreeManager::UpdatePanZoomControllerTree → Faulty: main process hang with main thread stuck in PCompositorChild::SendFlushRendering after non-fatal assert failures "aChild already in the tree" and "aChild already has siblings?"
Assignee | ||
Comment 5•12 years ago
|
||
(In reply to Benoit Jacob [:bjacob] from comment #2)
> If failure of these assertions can lead to hangs, would it then be
> reasonable to make these assertions fatal, so we can more easily understand
> why they fail?
I don't see how that would help understand why they fail.
Flags: needinfo?(roc)
Assignee | ||
Comment 7•12 years ago
|
||
That would conceivably help as we would then get a stack trace when they fail. However, I have made that change locally so I will get that the next time that I hit this bug. Nothing needs to land here.
Assignee | ||
Comment 8•11 years ago
|
||
Fixed by the landing of shadow layer updates validation fixes, bug 970747.
Assignee: nobody → bjacob
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Updated•11 years ago
|
status-firefox30:
--- → fixed
Updated•11 years ago
|
Target Milestone: --- → mozilla30
You need to log in
before you can comment on or make changes to this bug.
Description
•