Assertion failure: !(mHintsHandledByAncestors & nsChangeHint_ReconstructFrame) (why restyle descendants if we are reconstructing the frame for an ancestor?), at layout/base/GeckoRestyleManager.cpp:1179

RESOLVED FIXED in Firefox 55

Status

()

RESOLVED FIXED
2 years ago
a year ago

People

(Reporter: bc, Assigned: heycam)

Tracking

(Blocks: 1 bug, {assertion})

unspecified
mozilla55
assertion
Points:
---

Firefox Tracking Flags

(firefox-esr52 unaffected, firefox53 unaffected, firefox54 unaffected, firefox55 fixed)

Details

(URL)

Attachments

(1 attachment)

(Reporter)

Description

2 years ago
1. http://www.warhammer-forum.com/index.php?/topic/70920-comtes-vampires-perso-le-duc-rouge/&page=3#comment-3051481

2. Assertion failure: !(mHintsHandledByAncestors & nsChangeHint_ReconstructFrame) (why restyle descendants if we are reconstructing the frame for an ancestor?), at /home/worker/workspace/build/src/layout/base/GeckoRestyleManager.cpp:1179
#01: mozilla::ElementRestyler::RestyleSelf [layout/base/GeckoRestyleManager.cpp:2463]
#02: mozilla::ElementRestyler::Restyle [layout/base/GeckoRestyleManager.cpp:1844]
#03: mozilla::ElementRestyler::RestyleContentChildren [layout/base/GeckoRestyleManager.cpp:3448]
#04: mozilla::ElementRestyler::RestyleChildren [layout/base/GeckoRestyleManager.cpp:2973]
#05: mozilla::ElementRestyler::Restyle [layout/base/GeckoRestyleManager.cpp:1999]
...

Windows/Linux Nightly.

Assertion introduced in Bug 1301258
(Assignee)

Updated

2 years ago
Flags: needinfo?(cam)
(Assignee)

Updated

2 years ago
See Also: → bug 1349606
(Assignee)

Comment 1

2 years ago
I was able to reproduce this one locally, intermittently.  The issue is that the assertions check that we don't waste time restyling descendants of elements that we already recorded a ReconstructFrame change hint for.  But the current code does do that if ElementRestyler::Restyle picks a ReconstructFrame hint out of the RestyleTracker (as opposed to generating it from a CalcDifference call) and then proceeds to call RestyleSelf, which then restyles a child provider frame.

In theory we should be able to avoid calling RestyleSelf altogether in this case, but for now I'll just remove the assertion rather than spend much effort on Gecko's restyle code.
Flags: needinfo?(cam)
(Assignee)

Updated

2 years ago
Duplicate of this bug: 1349606
Comment hidden (mozreview-request)

Comment 4

2 years ago
mozreview-review
Comment on attachment 8859903 [details]
Bug 1357869 - Don't assert when we restyle a child provider frame when an ancestor already handled nsChangeHint_ReconstructFrame.

https://reviewboard.mozilla.org/r/131960/#review135550
Attachment #8859903 - Flags: review?(dbaron) → review+

Comment 5

2 years ago
Pushed by cmccormack@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/d2a6304ad598
Don't assert when we restyle a child provider frame when an ancestor already handled nsChangeHint_ReconstructFrame. r=dbaron

Comment 6

2 years ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/d2a6304ad598
Status: NEW → RESOLVED
Last Resolved: 2 years ago
status-firefox55: --- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
Assignee: nobody → cam
status-firefox53: --- → unaffected
status-firefox54: --- → unaffected
status-firefox-esr52: --- → unaffected
(Reporter)

Updated

a year ago
See Also: → bug 1360970
You need to log in before you can comment on or make changes to this bug.