Closed Bug 1357869 Opened 5 years ago Closed 5 years ago

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

Categories

(Core :: CSS Parsing and Computation, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla55
Tracking Status
firefox-esr52 --- unaffected
firefox53 --- unaffected
firefox54 --- unaffected
firefox55 --- fixed

People

(Reporter: bc, Assigned: heycam)

References

()

Details

(Keywords: assertion)

Attachments

(1 file)

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
Flags: needinfo?(cam)
See Also: → 1349606
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)
Duplicate of this bug: 1349606
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+
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
https://hg.mozilla.org/mozilla-central/rev/d2a6304ad598
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
See Also: → 1360970
You need to log in before you can comment on or make changes to this bug.