[Webkit-unassigned] [Bug 99796] ASSERTION FAILED: m_next in LayoutState.cpp

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Oct 25 14:26:44 PDT 2012


https://bugs.webkit.org/show_bug.cgi?id=99796


Dave Barton <dbarton at mathscribe.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |eric at webkit.org,
                   |                            |mitz at webkit.org,
                   |                            |simon.fraser at apple.com




--- Comment #2 from Dave Barton <dbarton at mathscribe.com>  2012-10-25 14:27:52 PST ---
I have 2 problems:

1. I can't reproduce the assert failing. That spec page hasn't changed, but I've tried in debug builds of both Safari (base webkit) and Chrome. There's only one <math> element inside a <table> in that page, so that must be causing the problem. It'd be great to have that inside some page that would reliably trigger the assert failure.

2. I guess I don't understand LayoutState. MathML is perhaps unique in that because of operator stretching (think large parentheses or brackets), a preferred logical width often can't be calculated until one's children's "preferred logical height" is known. See RenderMathMLBlock.h/cpp. I now see that RenderMedia::layout has this comment: "When calling layout() on a child node, a parent must either push a LayoutStateMaintainter, or instantiate LayoutStateDisabler." I guess I need to at least do one of those in RenderMathMLBlock::computeChildrenPreferredLogicalHeights before doing child->layoutIfNeeded(). I gather that even LayoutStateDisabler is maybe really to disable only repainting, and further LayoutStates will still be pushed for offset calculations for some reason, which might still trigger this assert? (RenderView.h says: "Note that even when disabled, LayoutState is still used to store layoutDelta." Why?) Sorry I am so confused. Is there a document or set of tests or person you can point me to for learning more about these issues? I had thought the two lines in RenderMathMLBlock::computeChildrenPreferredLogicalHeights:

    // Ensure a full repaint will happen after layout finishes.
    setNeedsLayout(true, MarkOnlyThis);

would deal with all this, and it's worked in existing tests for months up to now, but apparently that is not enough. Thanks for any help or pointers!

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list