Closed
Bug 1262432
Opened 9 years ago
Closed 9 years ago
browser_device_width.js crashes at nsLayoutUtils::HasDisplayPort(content) on e10s debug
Categories
(Core :: Panning and Zooming, defect, P1)
Tracking
()
People
(Reporter: jryans, Assigned: kats)
References
(Blocks 1 open bug)
Details
(Keywords: assertion, crash, Whiteboard: [multiviewport] [mvp-rdm])
Attachments
(1 file)
This crash seems to be permanent. We'll need to investigate this in more detail. It's a bit surprising that it appears on only one platform, so it may be some kind of async race.
Example log:
https://treeherder.mozilla.org/logviewer.html#?job_id=19011621&repo=try
Updated•9 years ago
|
Flags: qe-verify?
Priority: -- → P2
Whiteboard: [multiviewport][triage] → [multiviewport] [mvp-rdm]
Updated•9 years ago
|
Blocks: e10s-tests
tracking-e10s:
--- → +
Comment 1•9 years ago
|
||
This is frequent on Linux and OSX as well on the Ash repo (where we run e10s tests across all platforms).
https://treeherder.mozilla.org/logviewer.html#?job_id=163545&repo=ash
Keywords: assertion
Summary: browser_device_width.js crashes at nsLayoutUtils::HasDisplayPort(content) on Windows 7 e10s debug → browser_device_width.js crashes at nsLayoutUtils::HasDisplayPort(content) on e10s debug
Updated•9 years ago
|
Keywords: leave-open
Comment 3•9 years ago
|
||
| bugherder | ||
| Assignee | ||
Comment 4•9 years ago
|
||
I caught this in rr, investigating.
Assignee: nobody → bugmail.mozilla
| Reporter | ||
Comment 5•9 years ago
|
||
Great, thanks for checking it out :kats!
| Assignee | ||
Comment 6•9 years ago
|
||
So the assertion was added in bug 1208780, but I'm not sure that it's a valid assertion. It seems to assert that the first time we get a repaint request for a root scrollable, it will already have displayport margins set on it. That's true in a lot of cases, but not all. In particular, in this case, I'm seeing that the root content element is getting a scrollid via the code at [1], and that doesn't set any margins. The APZ sends a repaint request which is the first time that the element gets margins, and that causes the assertion to fail.
:tnikkel, do you recall why you added that assertion?
[1] http://mxr.mozilla.org/mozilla-central/source/layout/base/nsDisplayList.cpp?rev=62a953a61527#1759
Flags: needinfo?(tnikkel)
| Assignee | ||
Comment 7•9 years ago
|
||
It looks like bug 1208780 comment 24 through to comment 26 has some discussion on this. I think the assumption was incorrect (or maybe it has become incorrect since that code was written), and we should be ok to take out the assertion. The call to APZCCallbackHelper::SetDisplayPortMargins already handles the case where there is no displayport, and sets zero-margins on the ancestors. (Although the root frame shouldn't have any ancestors, so it should be a no-op).
Comment 8•9 years ago
|
||
(got mid-aired, but this is what I wrote)
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #6)
> :tnikkel, do you recall why you added that assertion?
>
> [1]
> http://mxr.mozilla.org/mozilla-central/source/layout/base/nsDisplayList.
> cpp?rev=62a953a61527#1759
I think this is the link you mean
http://mxr.mozilla.org/mozilla-central/source/gfx/layers/apz/util/APZCCallbackHelper.cpp?rev=84f8d2e0106c#259
See
https://bugzilla.mozilla.org/show_bug.cgi?id=1208780#c24
If we create a displayport then we want to make sure every async scrollable ancestor also has a displayport (a zero margin one). In that bug I determined (wrongly it seems) that UpdateRootFrame couldn't create a displayport, only modify one. So I added that assert. If we can create a displayport there then we should call SetZeroMarginDisplayPortOnAsyncScrollableAncestors. But I guess that will have no effect because it is the root? So assert that?
Flags: needinfo?(tnikkel)
| Assignee | ||
Comment 9•9 years ago
|
||
(In reply to Timothy Nikkel (:tnikkel) from comment #8)
> (got mid-aired, but this is what I wrote)
> > [1]
> > http://mxr.mozilla.org/mozilla-central/source/layout/base/nsDisplayList.
> > cpp?rev=62a953a61527#1759
>
> I think this is the link you mean
>
> http://mxr.mozilla.org/mozilla-central/source/gfx/layers/apz/util/
> APZCCallbackHelper.cpp?rev=84f8d2e0106c#259
>
That's the link to the assertion. The link I had was where the content element gets a scrollId (therefore an APZ) without getting displayport margins.
> See
> https://bugzilla.mozilla.org/show_bug.cgi?id=1208780#c24
>
> If we create a displayport then we want to make sure every async scrollable
> ancestor also has a displayport (a zero margin one). In that bug I
> determined (wrongly it seems) that UpdateRootFrame couldn't create a
> displayport, only modify one. So I added that assert.
Ok, makes sense.
> If we can create a
> displayport there then we should call
> SetZeroMarginDisplayPortOnAsyncScrollableAncestors.
This should already be happening via the call to APZCCallbackHelper::SetDisplayPortMargins.
> But I guess that will
> have no effect because it is the root? So assert that?
I'm not really sure what assertion can capture that? I'd rather just leave out the assertion and let the SetZeroMarginDisplayPortOnAsyncScrollableAncestors do its job if it's needed.
| Assignee | ||
Comment 10•9 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/45829/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/45829/
Attachment #8740536 -
Flags: review?(tnikkel)
| Assignee | ||
Updated•9 years ago
|
Component: Developer Tools: Responsive Design Mode → Panning and Zooming
Product: Firefox → Core
Version: Trunk → 48 Branch
Comment 11•9 years ago
|
||
Comment on attachment 8740536 [details]
MozReview Request: Bug 1262432 - Remove assertion that may be legitimately false sometimes. r?tnikkel
https://reviewboard.mozilla.org/r/45829/#review42427
Attachment #8740536 -
Flags: review?(tnikkel) → review+
Comment 12•9 years ago
|
||
| Assignee | ||
Comment 13•9 years ago
|
||
RyanVM, should I go ahead and re-enable the test right away, or do you want to let my fix merge to Ash and bake for a bit first?
Flags: needinfo?(ryanvm)
Comment 14•9 years ago
|
||
We have Win7 debug devtools test coverage on inbound, so go ahead and re-enable whenever.
Flags: needinfo?(ryanvm)
| Assignee | ||
Updated•9 years ago
|
Keywords: leave-open
Comment 15•9 years ago
|
||
Comment 16•9 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/6fc0294f96c5
https://hg.mozilla.org/mozilla-central/rev/c93227b825a4
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla48
Comment 17•9 years ago
|
||
Hi Ryan, will this bug need verification?
Iteration: --- → 48.3 - Apr 25
Flags: needinfo?(jryans)
Priority: P2 → P1
| Reporter | ||
Comment 18•9 years ago
|
||
(In reply to Marco Mucci [:MarcoM] from comment #17)
> Hi Ryan, will this bug need verification?
No, we should know enough from just the automated test results.
Flags: qe-verify?
Flags: qe-verify-
Flags: needinfo?(jryans)
You need to log in
before you can comment on or make changes to this bug.
Description
•