Details
-
Bug
-
Resolution: Won't Do
-
P2: Important
-
None
-
5.3.0
-
None
-
Qt 5.3.0, PyQt 5.3, new harfbuzz engine
Description
I got an assertion failure while browsing the Qt JIRA (or possibly when closing a QWebView-Tab in a QTabWidget) with a Qt developer build:
ASSERTION FAILED: m_repaintRect == renderer()->clippedOverflowRectForRepaint(renderer()->containerForRepaint()) rendering/RenderLayer.cpp(809) : void WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, WebCore::RenderLayer::UpdateLayerPositionsAfterScrollFlags)
This happened in my PyQt-project, I've not attempted to reproduce it with the example browser so far.
Full backtrace:
# Happened when browsing on bugreports.qt-project.org ASSERTION FAILED: m_repaintRect == renderer()->clippedOverflowRectForRepaint(renderer()->containerForRepaint()) rendering/RenderLayer.cpp(809) : void WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, WebCore::RenderLayer::UpdateLayerPositionsAfterScrollFlags) #0 0x00007fffeaa8ba4c in WTFCrash () at wtf/Assertions.cpp:345 No locals. #1 0x00007fffea24f374 in WebCore::RenderLayer::updateLayerPositionsAfterScroll (this=this@entry=0x309b848, geometryMap=geometryMap@entry=0x7fffffffa240, flags=flags@entry=0) at rendering/RenderLayer.cpp:809 positionChanged = <optimized out> __PRETTY_FUNCTION__ = "void WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, WebCore::RenderLayer::UpdateLayerPositionsAfterScrollFlags)" #2 0x00007fffea24f55c in WebCore::RenderLayer::updateLayerPositionsAfterDocumentScroll (this=0x309b848) at rendering/RenderLayer.cpp:760 __PRETTY_FUNCTION__ = "void WebCore::RenderLayer::updateLayerPositionsAfterDocumentScroll()" geometryMap = {m_insertionPosition = 18446744073709551615, m_nonUniformStepsCount = 0, m_transformedStepsCount = 0, m_fixedStepsCount = 0, m_mapping = {<WTF::VectorBuffer<WebCore::RenderGeometryMapStep, 32ul>> = {<WTF::VectorBufferBase<WebCore::RenderGeometryMapStep>> = {m_buffer = 0x7fffffffa268, m_capacity = 32}, static m_inlineBufferSize = 1024, m_inlineBuffer = { buffer = "\310\361\062\005", '\000' <repeats 24 times>, "\377\177\000\000\360\241b", '\000' <repeats 14 times>, "\313ޘѡ\235\262h\261\346\226\377\177\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\313ޘѡ\235\262", '\000' <repeats 16 times>, "\002\000\000\000\000\000\000\000\360\252\377\377\377\177\000\000\000\000\000\000\000\000\000\000\230=\236\005\000\000\000\000\070O\020\003\000\000\000\000\002\202 \352\377\177\000\000@\243\377\377\377\177\000\000\000\000\070B\000\000\070B\000\000\000\000\377\177\000\000u\314\033\352\377\177\000\000\000\000\000\000\000\000\000\000b\256\356\350\377\177\000\000\000\000\000\000\000\000\000\000"...}}, m_size = 1}, m_accumulatedOffset = {m_width = {m_value = 0}, m_height = {m_value = 0}}, m_mapCoordinatesFlags = 2} #3 0x00007fffe8ea989d in WebCore::ScrollView::scrollTo (this=this@entry=0x5102c10, newOffset=...) at platform/ScrollView.cpp:397 scrollDelta = {m_width = 0, m_height = -230} #4 0x00007fffe8d65eef in WebCore::FrameView::scrollTo (this=0x5102c10, newOffset=...) at page/FrameView.cpp:3112 offset = {m_width = {m_value = 0}, m_height = {m_value = 14720}} #5 0x00007fffe8ea5157 in WebCore::ScrollView::setScrollOffset (this=0x5102c10, offset=...) at platform/ScrollView.cpp:378 horizontalOffset = <optimized out> verticalOffset = <optimized out> newOffset = {m_width = 0, m_height = 0} #6 0x00007fffe8e9f976 in WebCore::ScrollableArea::scrollPositionChanged (this=0x5102c58, position=...) at platform/ScrollableArea.cpp:145 oldPosition = {m_x = <optimized out>, m_y = 230} verticalScrollbar = <optimized out> #7 0x00007fffe8e9fd7f in WebCore::ScrollableArea::setScrollOffsetFromAnimation (this=<optimized out>, offset=...) at platform/ScrollableArea.cpp:190 No locals. #8 0x00007fffe8ea05e1 in WebCore::ScrollAnimator::notifyPositionChanged (this=<optimized out>, delta=...) at platform/ScrollAnimator.cpp:142 No locals. #9 0x00007fffe8ea0580 in WebCore::ScrollAnimator::scrollToOffsetWithoutAnimation (this=<optimized out>, offset=...) at platform/ScrollAnimator.cpp:81 delta = {m_width = 0, m_height = -230} #10 0x00007fffe8ea7ec4 in WebCore::ScrollView::updateScrollbars (this=this@entry=0x5102c10, desiredOffset=...) at platform/ScrollView.cpp:636 oldScrollCornerRect = {m_location = {m_x = 0, m_y = 0}, m_size = {m_width = 0, m_height = 0}} hasHorizontalScrollbar = false hasVerticalScrollbar = <optimized out> hScroll = <optimized out> vScroll = <optimized out> adjustedScrollPosition = {m_x = 0, m_y = 0} newHasHorizontalScrollbar = <optimized out> newHasVerticalScrollbar = true #11 0x00007fffe8ea8a8f in WebCore::ScrollView::setScrollPosition (this=this@entry=0x5102c10, scrollPoint=...) at platform/ScrollView.cpp:436 newScrollPosition = {m_x = 0, m_y = 0} #12 0x00007fffe8d62543 in WebCore::FrameView::setScrollPosition (this=this@entry=0x5102c10, scrollPoint=...) at page/FrameView.cpp:1985 changeInProgrammaticScroll = {m_scopedVariable = @0x5102e59, m_originalValue = false} #13 0x00007fffea1e3086 in WebCore::RenderLayer::scrollRectToVisible (this=this@entry=0x309b848, rect=..., alignX=..., alignY=...) at rendering/RenderLayer.cpp:2353 viewRect = {m_location = {m_x = {m_value = 0}, m_y = {m_value = 14720}}, m_size = {m_width = {m_value = 86272}, m_height = {m_value = 45504}}} visibleRectRelativeToDocument = {m_location = {m_x = {m_value = 0}, m_y = {m_value = 14720}}, m_size = {m_width = {m_value = 86272}, m_height = {m_value = 45504}}} ownerElement = <optimized out> parentLayer = <optimized out> restrictedByLineClamp = <optimized out> __PRETTY_FUNCTION__ = "void WebCore::RenderLayer::scrollRectToVisible(const WebCore::LayoutRect&, const WebCore::ScrollAlignment&, const WebCore::ScrollAlignment&)" newRect = {m_location = {m_x = {m_value = 0}, m_y = {m_value = 0}}, m_size = {m_width = {m_value = 2496}, m_height = {m_value = 2944}}} frameView = 0x5102c10 #14 0x00007fffea1e2c59 in WebCore::RenderLayer::scrollRectToVisible (this=<optimized out>, rect=..., alignX=..., alignY=...) at rendering/RenderLayer.cpp:2369 parentLayer = 0x309b848 restrictedByLineClamp = <optimized out> __PRETTY_FUNCTION__ = "void WebCore::RenderLayer::scrollRectToVisible(const WebCore::LayoutRect&, const WebCore::ScrollAlignment&, const WebCore::ScrollAlignment&)" newRect = {m_location = {m_x = {m_value = 0}, m_y = {m_value = 0}}, m_size = {m_width = {m_value = 2496}, m_height = {m_value = 2944}}} frameView = 0x5102c10 #15 0x00007fffea1e33ba in WebCore::RenderObject::scrollRectToVisible (this=<optimized out>, rect=..., alignX=..., alignY=...) at rendering/RenderObject.cpp:596 enclosingLayer = <optimized out> #16 0x00007fffea40f10c in WebCore::Element::updateFocusAppearance (this=0x233ddb0) at dom/Element.cpp:2160 No locals. #17 0x00007fffea4651f0 in WebCore::Element::focus (this=0x233ddb0, restorePreviousSelection=<optimized out>, direction=<optimized out>) at dom/Element.cpp:2138 doc = 0x3dbf040 protect = {m_ptr = 0x233ddb0} #18 0x00007fffe8d42ee6 in WebCore::FocusController::advanceFocusInDocumentOrder (this=<optimized out>, direction=<optimized out>, event=<optimized out>, initialFocus=initialFocus@entry=false) at page/FocusController.cpp:357 __PRETTY_FUNCTION__ = "bool WebCore::FocusController::advanceFocusInDocumentOrder(WebCore::FocusDirection, WebCore::KeyboardEvent*, bool)" currentNode = <optimized out> caretBrowsing = <optimized out> element = {m_ptr = 0x233ddb0} #19 0x00007fffe8d4817c in WebCore::FocusController::advanceFocus (this=<optimized out>, direction=direction@entry=WebCore::FocusDirectionForward, event=event@entry=0x36c9160, initialFocus=initialFocus@entry=false) at page/FocusController.cpp:270 No locals. #20 0x00007fffe8d287cc in WebCore::EventHandler::defaultTabEventHandler (this=0x5ae3410, event=0x36c9160) at page/EventHandler.cpp:3759 focusDirection = WebCore::FocusDirectionForward event = 0x36c9160 this = 0x5ae3410 #21 0x00007fffe8d2bebb in WebCore::EventHandler::defaultKeyboardEventHandler (this=0x5ae3410, event=event@entry=0x36c9160) at page/EventHandler.cpp:3352 No locals. #22 0x00007fffe8ae5ba8 in WebCore::Node::defaultEventHandler (this=0x22bb7f0, event=0x36c9160) at dom/Node.cpp:2326 event = 0x36c9160 this = 0x22bb7f0 #23 0x00007fffea451ac0 in dispatchEventPostProcess (preDispatchEventHandlerResult=<optimized out>, this=<optimized out>) at dom/EventDispatcher.cpp:202 No locals. #24 WebCore::EventDispatcher::dispatch (this=0x7fffffffaee0) at dom/EventDispatcher.cpp:121 __PRETTY_FUNCTION__ = "bool WebCore::EventDispatcher::dispatch()" windowEventContext = {m_window = {m_ptr = 0x5ae5ea0}, m_target = {m_ptr = 0x22bb7f0}} cookie = {m_instrumentingAgents = {m_ptr = 0x0}, m_timelineAgentId = 0} preDispatchEventHandlerResult = 0x0 #25 0x00007fffea44fd99 in WebCore::EventDispatcher::dispatchEvent (node=node@entry=0x22bb7f0, mediator=...) at dom/EventDispatcher.cpp:53 __PRETTY_FUNCTION__ = "static bool WebCore::EventDispatcher::dispatchEvent(WebCore::Node*, WTF::PassRefPtr<WebCore::EventDispatchMediator>)" dispatcher = {m_eventPath = {<WTF::VectorBuffer<WTF::OwnPtr<WebCore::EventContext>, 32ul>> = {<WTF::VectorBufferBase<WTF::OwnPtr<WebCore::EventContext> >> = {m_buffer = 0x7fffffffaef0, m_capacity = 32}, static m_inlineBufferSize = 256, m_inlineBuffer = { buffer = "\000\246\334\005\000\000\000\000\000\035\257\005\000\000\000\000pk\237\005", '\000' <repeats 20 times>, "\310$\234\340\377\177\000\000@\017~\000\000\000\000\000\000\313ޘѡ\235\262G\257\377\377\377\177\000\000\240\263\377\377\377\177\000\000\030\000\000\000\000\000\000\000PA\326\000\000\000\000\000\020\201f\003\000\000\000\000\240\263\377\377\377\177\000\000@\017~\000\000\000\000\000\353\036\033\341\377\177\000\000PA\326\000\000\000\000\000[\217&\366\377\177", '\000' <repeats 11 times>, "\313ޘѡ\235\262\260\257\377\377\377\177\000\000\005\000\000\000ѡ\235\262H\000\000\000\000\000\000\000\200,r\367\377\177\000\000\030\000\000\000\000\000\000\000\360\267+\002\000\000\000\000"...}}, m_size = 3}, m_node = {m_ptr = 0x22bb7f0}, m_event = {m_ptr = 0x36c9160}, m_view = {m_ptr = 0x5102c10}, m_eventDispatched = true} #26 0x00007fffe8ae7189 in WebCore::Node::dispatchEvent (this=0x22bb7f0, event=...) at dom/Node.cpp:2237 No locals. #27 0x00007fffea4013cb in WebCore::EventTarget::dispatchEvent (this=0x22bb7f0, event=..., ec=@0x7fffffffb130: 0) at dom/EventTarget.cpp:148 ec = @0x7fffffffb130: 0 event = {m_ptr = 0x7fffffffb1a0} this = 0x22bb7f0 #28 0x00007fffe8d2fe58 in WebCore::EventHandler::keyEvent (this=0x5ae3410, initialKeyEvent=...) at page/EventHandler.cpp:3252 protector = {m_ptr = 0x5102c10} changedFocusedFrame = <optimized out> keydownResult = <optimized out> keyPressEvent = {<WebCore::PlatformEvent> = {m_type = 0, m_modifiers = 0, m_timestamp = 6.9533367411528062e-310}, m_text = {m_impl = {m_ptr = 0x7fffffffb290}}, m_unmodifiedText = {m_impl = {m_ptr = 0x12}}, m_keyIdentifier = {m_impl = {m_ptr = 0x1}}, m_windowsVirtualKeyCode = 1, m_nativeVirtualKeyCode = 0, m_macCharCode = 0, m_autoRepeat = false, m_isKeypad = false, m_isSystemKey = false, m_qtEvent = 0x7fffe1409273 <sipStrings_QtWebKitWidgets+2995>, m_useNativeVirtualKeyAsDOMKey = false} node = {m_ptr = 0x22bb7f0} gestureIndicator = {static s_state = WebCore::DefinitelyProcessingUserGesture, m_previousState = WebCore::DefinitelyNotProcessingUserGesture} keydown = {m_ptr = 0x36c9160} typingGestureIndicator = {m_previousProcessingUserTypingGesture = false, m_previousFocusedNode = {m_ptr = 0x0}} matchedAnAccessKey = <optimized out> keyDownEvent = {<WebCore::PlatformEvent> = {m_type = 3, m_modifiers = 0, m_timestamp = 1403673201.205816}, m_text = {m_impl = {m_ptr = 0x0}}, m_unmodifiedText = {m_impl = {m_ptr = 0x0}}, m_keyIdentifier = {m_impl = { m_ptr = 0x2f2f0e0}}, m_windowsVirtualKeyCode = 9, m_nativeVirtualKeyCode = 0, m_macCharCode = 0, m_autoRepeat = false, m_isKeypad = false, m_isSystemKey = false, m_qtEvent = 0x7fffffffb2e0, m_useNativeVirtualKeyAsDOMKey = false} keypress = <optimized out> #29 0x00007fffe8742631 in QWebPageAdapter::handleKeyEvent (this=this@entry=0x356a930, ev=ev@entry=0x7fffffffb2e0) at qt/WebCoreSupport/QWebPageAdapter.cpp:1373 frame = 0x3570200 #30 0x00007fffe11a9211 in QWebPagePrivate::keyPressEvent (this=0x356a930, ev=ev@entry=0x7fffffffb2e0) at WebKit/qt/WidgetApi/qwebpage.cpp:841 handled = <optimized out> #31 0x00007fffe11b005a in QWebPage::focusNextPrevChild (this=0x579bea0, next=next@entry=true) at WebKit/qt/WidgetApi/qwebpage.cpp:2652 ev = {<QInputEvent> = {<QEvent> = {_vptr.QEvent = 0x7ffff0702cd0 <vtable for QKeyEvent+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff5de4a40 <qt_meta_stringdata_QEvent>, data = 0x7ffff5de4480 <qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 6, posted = 0, spont = 0, m_accept = 1, reserved = 4234}, modState = {i = 0}, ts = 0}, txt = {static null = {<No data fields>}, d = 0x7ffff5cde3e0 <QArrayData::shared_null>}, k = 16777217, nScanCode = 0, nVirtualKey = 0, nModifiers = 0, c = 1, autor = 0} #32 0x00007fffe11b2181 in QWebView::focusNextPrevChild (this=0x3668110, next=true) at WebKit/qt/WidgetApi/qwebview.cpp:1009 No locals. #33 0x00007fffe13ec8bc in sipQWebView::focusNextPrevChild(bool) () from /usr/lib/python3.4/site-packages/PyQt5/QtWebKitWidgets.so No symbol table info available. #34 0x00007ffff08ac7fb in QWidgetPrivate::hide_helper (this=this@entry=0x356a1d0) at kernel/qwidget.cpp:7266 fw = <optimized out> isEmbedded = <optimized out> hideEvent = {<QEvent> = {_vptr.QEvent = 0x7ffff0702f30 <vtable for QHideEvent+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff5de4a40 <qt_meta_stringdata_QEvent>, data = 0x7ffff5de4480 <qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 18, posted = 0, spont = 0, m_accept = 1, reserved = 29}, <No data fields>} #35 0x00007ffff08b01f0 in QWidget::setVisible (this=0x3668110, visible=<optimized out>) at kernel/qwidget.cpp:7426 hideToParentEvent = {_vptr.QEvent = 0x7, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff5de4a40 <qt_meta_stringdata_QEvent>, data = 0x7ffff5de4480 <qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x8, t = 65104, posted = 0, spont = 1, m_accept = 1, reserved = 181} #36 0x00007fffe13ec76c in sipQWebView::setVisible(bool) () from /usr/lib/python3.4/site-packages/PyQt5/QtWebKitWidgets.so No symbol table info available. #37 0x00007ffff08963ee in QStackedLayout::takeAt (this=0xeac910, index=8) at kernel/qstackedlayout.cpp:293 item = 0x5aefe50 #38 0x00007ffff0890a8f in QLayout::removeWidget (this=0xeac910, widget=0x3668110) at kernel/qlayout.cpp:1353 i = 8 child = <optimized out> #39 0x00007ffff122ff18 in ?? () from /usr/lib/python3.4/site-packages/PyQt5/QtWidgets.so No symbol table info available. [Python stuff...]