Closed
Bug 1428765
Opened 6 years ago
Closed 6 years ago
Crash in nsDisplayItem::SetClipChain
Categories
(Core :: Graphics: WebRender, defect, P3)
Tracking
()
RESOLVED
FIXED
mozilla59
Tracking | Status | |
---|---|---|
firefox-esr52 | --- | unaffected |
firefox57 | --- | unaffected |
firefox58 | --- | unaffected |
firefox59 | --- | fixed |
People
(Reporter: marcia, Assigned: kats)
References
Details
(Keywords: crash, regression)
Crash Data
Attachments
(1 file)
This bug was filed from the Socorro interface and is report bp-1da823db-3ca7-48a6-8a75-b57360180107. ============================================================= Seen while looking at nightly crash stats: http://bit.ly/2D69vGX. Possible regression range based on Build ID: https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=81362f7306fe413b19fdba27cd0e9a5525d902e1&tochange=36aaa86e37bac0db15a499a7f48a83bf9dff5602 Possibly Bug 1422057? ni on :kats Top 10 frames of crashing thread: 0 XUL nsDisplayItem::SetClipChain layout/painting/nsDisplayList.h:334 1 XUL nsDisplayItem::nsDisplayItem layout/painting/nsDisplayList.cpp:2974 2 XUL nsDisplayBackgroundImage::nsDisplayBackgroundImage layout/painting/nsDisplayList.cpp:2945 3 XUL nsDisplayBackgroundImage::AppendBackgroundItemsToTop layout/painting/nsDisplayList.cpp:3428 4 XUL nsFrame::DisplayBorderBackgroundOutline layout/generic/nsFrame.cpp:2319 5 XUL nsBlockFrame::BuildDisplayList layout/generic/nsBlockFrame.cpp:6687 6 XUL nsIFrame::BuildDisplayListForChild layout/generic/nsFrame.cpp:3782 7 XUL DisplayLine layout/generic/nsBlockFrame.cpp:6650 8 XUL nsBlockFrame::BuildDisplayList layout/generic/nsBlockFrame.cpp:6745 9 XUL nsIFrame::BuildDisplayListForChild layout/generic/nsFrame.cpp:3782 =============================================================
Flags: needinfo?(bugmail)
Updated•6 years ago
|
Blocks: stage-wr-trains
Priority: -- → P3
Assignee | ||
Comment 2•6 years ago
|
||
Not really sure offhand why this is happening. But I agree it's probably introduced by my patches so I'll take a look.
Assignee: nobody → bugmail
Flags: needinfo?(bugmail)
Comment 3•6 years ago
|
||
I've had this crash fairly regularly today, if there's anything you think I can do to help isolate or provide STR let me know!
Assignee | ||
Comment 4•6 years ago
|
||
If you have STR that would be great!
Reporter | ||
Comment 5•6 years ago
|
||
It seems as if Bug 1429008 has one possible way to reproduce the crash.
Assignee | ||
Comment 6•6 years ago
|
||
I got a URL from Stuart yesterday that lets me reproduce as well. I'm debugging but it's slow going since it only happens on OS X and I can't use rr there.
Reporter | ||
Comment 7•6 years ago
|
||
Adding another crash signature which falls within the same regression range and is 10.13 only.
Crash Signature: [@ nsDisplayItem::SetClipChain] → [@ nsDisplayItem::SetClipChain]
[@ mozilla::DisplayListClipState::InvalidateCurrentCombinedClipChain]
Assignee | ||
Comment 8•6 years ago
|
||
This is really bizarre. What seems to be happening is that sometimes the unordered_set::insert(c) call at [1] is returning (c, false). That means we go ahead and destroy c, and then return that very same pointer. This garbage return value is what later causes the crash. I added some more logging and it looks like in a small number of cases, the unordered_set::insert(x) is returning (y, false) even though a call to unordered_set::find(x) just prior to it doesn't find anything. As long as x != y we don't crash, even though this seems like it violates the unordered_set API. One possibility is that the custom hash/equals functions I'm providing to the unordered_set are buggy, so I'm going to check that. If those are fine, then the only possibility I can see is that this is a bug in the implementation of unordered_set itself. That might explain why it only happens on OS X. [1] https://searchfox.org/mozilla-central/rev/cf149b7b63ff97023e28723167725e38cf5df757/layout/painting/nsDisplayList.cpp#1600
Assignee | ||
Comment 9•6 years ago
|
||
Yeah this is my fault. The hash function sometimes returns different values for two DisplayItemClipChain items that are ::Equal.
Assignee | ||
Comment 10•6 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=b350fb5c13f1f046f6c046651c7ef29327eea8f4
Comment hidden (mozreview-request) |
Comment 12•6 years ago
|
||
mozreview-review |
Comment on attachment 8941155 [details] Bug 1428765 - Fix scenario where display item clip chains hash to different values even though they are equal. https://reviewboard.mozilla.org/r/211420/#review217216 Yikes. Not the kind of bug you'd foresee by reading the code...
Attachment #8941155 -
Flags: review?(mstange) → review+
Comment 14•6 years ago
|
||
Pushed by kgupta@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/865837f77a90 Fix scenario where display item clip chains hash to different values even though they are equal. r=mstange
Comment 15•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/865837f77a90
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Updated•6 years ago
|
status-firefox57:
--- → unaffected
status-firefox58:
--- → unaffected
status-firefox-esr52:
--- → unaffected
You need to log in
before you can comment on or make changes to this bug.
Description
•