NEW 88128
[Win] ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(FloatQuad(result).boundingBox())) failed in RenderGeometryMap::absoluteRect
https://bugs.webkit.org/show_bug.cgi?id=88128
Summary [Win] ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(Float...
Jessie Berlin
Reported 2012-06-01 13:21:12 PDT
This affects a number of compositing tests on Windows, including compositing/geometry/fixed-position.html compositing/geometry/fixed-position-composited-switch.html compositing/geometry/limit-layer-bounds-fixed-positioned.html compositing/geometry/video-fixed-scrolling.html I am going to skip these tests on Windows for now in order to get the bots greener. FloatRect RenderGeometryMap::absoluteRect(const FloatRect& rect) const { FloatRect result; if (!hasFixedPositionStep() && !hasTransformStep() && !hasNonUniformStep()) { result = rect; result.move(m_accumulatedOffset); } else { TransformState transformState(TransformState::ApplyTransformDirection, rect.center(), rect); mapToAbsolute(transformState); result = transformState.lastPlanarQuad().boundingBox(); } #if !ASSERT_DISABLED FloatRect rendererMappedResult = m_mapping.last()->m_renderer->localToAbsoluteQuad(rect).boundingBox(); // Inspector creates renderers with negative width <https://bugs.webkit.org/show_bug.cgi?id=87194>. // Taking FloatQuad bounds avoids spurious assertions because of that. ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(FloatQuad(result).boundingBox())); #endif > WebKit.dll!WebCore::RenderGeometryMap::absoluteRect(const WebCore::FloatRect & rect={...}) Line 126 + 0x74 bytes C++ WebKit.dll!WebCore::RenderLayerCompositor::addToOverlapMap(WebCore::RenderLayerCompositor::OverlapMap & overlapMap={...}, WebCore::RenderLayer * layer=0x0560cdb4, WebCore::IntRect & layerBounds={...}, bool & boundsComputed=false) Line 648 + 0x2c bytes C++ WebKit.dll!WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer * ancestorLayer=0x0560db4c, WebCore::RenderLayer * layer=0x0560cdb4, WebCore::RenderLayerCompositor::OverlapMap * overlapMap=0x0044de6c, WebCore::CompositingState & compositingState={...}, bool & layersChanged=false) Line 836 C++ WebKit.dll!WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer * ancestorLayer=0x0560cf84, WebCore::RenderLayer * layer=0x0560db4c, WebCore::RenderLayerCompositor::OverlapMap * overlapMap=0x0044de6c, WebCore::CompositingState & compositingState={...}, bool & layersChanged=false) Line 815 C++ WebKit.dll!WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer * ancestorLayer=0x0560c1ec, WebCore::RenderLayer * layer=0x0560cf84, WebCore::RenderLayerCompositor::OverlapMap * overlapMap=0x0044de6c, WebCore::CompositingState & compositingState={...}, bool & layersChanged=false) Line 815 C++ WebKit.dll!WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer * ancestorLayer=0x00000000, WebCore::RenderLayer * layer=0x0560c1ec, WebCore::RenderLayerCompositor::OverlapMap * overlapMap=0x0044de6c, WebCore::CompositingState & compositingState={...}, bool & layersChanged=false) Line 815 C++ WebKit.dll!WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType updateType=CompositingUpdateOnScroll, WebCore::RenderLayer * updateRoot=0x0560c1ec) Line 407 C++ WebKit.dll!WebCore::FrameView::updateFixedElementsAfterScrolling() Line 1783 C++ WebKit.dll!WebCore::ScrollView::scrollTo(const WebCore::IntSize & newOffset={...}) Line 381 + 0x12 bytes C++ WebKit.dll!WebCore::FrameView::scrollTo(const WebCore::IntSize & newOffset={...}) Line 2605 C++ WebKit.dll!WebCore::ScrollView::setScrollOffset(const WebCore::IntPoint & offset={...}) Line 360 + 0x17 bytes C++ WebKit.dll!WebCore::ScrollableArea::scrollPositionChanged(const WebCore::IntPoint & position={...}) Line 145 + 0x16 bytes C++ WebKit.dll!WebCore::ScrollableArea::setScrollOffsetFromAnimation(const WebCore::IntPoint & offset={...}) Line 190 C++ WebKit.dll!WebCore::ScrollAnimator::notifyPositionChanged() Line 144 C++ WebKit.dll!WebCore::ScrollAnimator::scrollToOffsetWithoutAnimation(const WebCore::FloatPoint & offset={...}) Line 79 + 0xf bytes C++ WebKit.dll!WebCore::ScrollableArea::scrollToOffsetWithoutAnimation(const WebCore::FloatPoint & offset={...}) Line 125 + 0x1e bytes C++ WebKit.dll!WebCore::ScrollView::updateScrollbars(const WebCore::IntSize & desiredOffset={...}) Line 619 C++ WebKit.dll!WebCore::ScrollView::setScrollPosition(const WebCore::IntPoint & scrollPoint={...}) Line 416 C++ WebKit.dll!WebCore::ScrollView::scrollBy(const WebCore::IntSize & s={...}) Line 185 + 0x56 bytes C++ WebKit.dll!WebCore::DOMWindow::scrollBy(int x=50, int y=50) Line 1414 C++ WebKit.dll!WebCore::jsDOMWindowPrototypeFunctionScrollBy(JSC::ExecState * exec=0x05c00090) Line 12105 C++ 0644178f() JavaScriptCore.dll!cti_vm_lazyLinkCall() Line 2265 + 0x1c bytes C++ JavaScriptCore.dll!JSC::JSValue::decode(__int64 encodedJSValue=7275000547256565760) Line 154 + 0xf bytes C++ 05570694() JavaScriptCore.dll!JSC::Interpreter::executeCall(JSC::ExecState * callFrame=0x02b6d8c8, JSC::JSObject * function=0x02751cd0, JSC::CallType callType=CallTypeJS, const JSC::CallData & callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList & args={...}) Line 1305 + 0x2a bytes C++ JavaScriptCore.dll!JSC::call(JSC::ExecState * exec=0x02b6d8c8, JSC::JSValue functionObject={...}, JSC::CallType callType=CallTypeJS, const JSC::CallData & callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList & args={...}) Line 39 + 0x3c bytes C++ WebKit.dll!WebCore::JSMainThreadExecState::call(JSC::ExecState * exec=0x02b6d8c8, JSC::JSValue functionObject={...}, JSC::CallType callType=CallTypeJS, const JSC::CallData & callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList & args={...}) Line 56 + 0x29 bytes C++ WebKit.dll!WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext * scriptExecutionContext=0x0984314c, WebCore::Event * event=0x097c3088) Line 133 + 0x64 bytes C++ WebKit.dll!WebCore::EventTarget::fireEventListeners(WebCore::Event * event=0x097c3088, WebCore::EventTargetData * d=0x097ec0a0, WTF::Vector<WebCore::RegisteredEventListener,1> & entry=[1]({listener=0x098601f8 {m_jsFunction={...} m_wrapper={...} m_isAttribute=false ...} useCapture=false })) Line 231 + 0x22 bytes C++ WebKit.dll!WebCore::EventTarget::fireEventListeners(WebCore::Event * event=0x097c3088) Line 200 C++ WebKit.dll!WebCore::DOMWindow::dispatchEvent(WTF::PassRefPtr<WebCore::Event> prpEvent={...}, WTF::PassRefPtr<WebCore::EventTarget> prpTarget={...}) Line 1669 + 0x11 bytes C++ WebKit.dll!WebCore::DOMWindow::dispatchLoadEvent() Line 1644 C++ WebKit.dll!WebCore::Document::dispatchWindowLoadEvent() Line 3983 C++ WebKit.dll!WebCore::Document::implicitClose() Line 2446 C++ WebKit.dll!WebCore::FrameLoader::checkCallImplicitClose() Line 762 C++ WebKit.dll!WebCore::FrameLoader::checkCompleted() Line 709 C++ WebKit.dll!WebCore::FrameLoader::loadDone() Line 654 C++ WebKit.dll!WebCore::CachedResourceLoader::loadDone() Line 664 C++ WebKit.dll!WebCore::SubresourceLoader::releaseResources() Line 318 C++ WebKit.dll!WebCore::ResourceLoader::didFinishLoading(double finishTime=0.00000000000000000) Line 298 + 0xf bytes C++ WebKit.dll!WebCore::SubresourceLoader::didFinishLoading(double finishTime=0.00000000000000000) Line 279 C++ WebKit.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal=0x097b7568, double finishTime=0.00000000000000000) Line 435 + 0x18 bytes C++ WebKit.dll!WebCore::didFinishLoading(_CFURLConnection * conn=0x097b7770, const void * clientInfo=0x097b7568) Line 301 + 0x26 bytes C++ CFNetwork.dll!URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue * preQ=0x0044eaa4) Line 1739 + 0x2b bytes C++ CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<enum XClientEvent,XClientEventParams> * e=0x0560dd34, long count=3) Line 2256 C++ CFNetwork.dll!URLConnectionClient::processEvents() Line 360 + 0x21 bytes C++ CFNetwork.dll!URLConnectionWndProc(HWND__ * hWnd=0x001601fc, unsigned int message=1231, unsigned int wParam=159086448, long lParam=0) Line 109 C++ user32.dll!_InternalCallWinProc@20() + 0x23 bytes user32.dll!_UserCallWinProcCheckWow@32() + 0xd3 bytes user32.dll!_DispatchMessageWorker@8() + 0xee bytes user32.dll!_DispatchMessageW@4() + 0xf bytes DumpRenderTree.dll!runTest(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & testPathOrURL="H:\home\jhoneycutt\src\OpenSource\LayoutTests\compositing\geometry\fixed-position.html") Line 1049 + 0xf bytes C++ DumpRenderTree.dll!dllLauncherEntryPoint(int argc=2, const char * * argv=0x01116f58) Line 1431 + 0x28 bytes C++ DumpRenderTree.exe!main(int argc=2, const char * * argv=0x01116f58) Line 198 + 0x10 bytes C++ DumpRenderTree.exe!__tmainCRTStartup() Line 597 + 0x17 bytes C kernel32.dll!@BaseThreadInitThunk@12() + 0xe bytes ntdll.dll!___RtlUserThreadStart@8() + 0x23 bytes ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes
Attachments
Radar WebKit Bug Importer
Comment 1 2012-06-01 13:22:03 PDT
Jessie Berlin
Comment 2 2012-06-01 13:36:37 PDT
Interestingly, a number of compositing/rtl tests assert in the same place, but with a slightly different backtrace: compositing/rtl/rtl-fixed-overflow-scrolled.html compositing/rtl/rtl-fixed-overflow.html compositing/rtl/rtl-fixed.html > WebKit.dll!WebCore::RenderGeometryMap::absoluteRect(const WebCore::FloatRect & rect={...}) Line 126 + 0x74 bytes C++ WebKit.dll!WebCore::RenderLayerCompositor::addToOverlapMap(WebCore::RenderLayerCompositor::OverlapMap & overlapMap={...}, WebCore::RenderLayer * layer=0x09cd6444, WebCore::IntRect & layerBounds={...}, bool & boundsComputed=false) Line 648 + 0x2c bytes C++ WebKit.dll!WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer * ancestorLayer=0x09cd6614, WebCore::RenderLayer * layer=0x09cd6444, WebCore::RenderLayerCompositor::OverlapMap * overlapMap=0x001bd984, WebCore::CompositingState & compositingState={...}, bool & layersChanged=false) Line 836 C++ WebKit.dll!WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer * ancestorLayer=0x0556e184, WebCore::RenderLayer * layer=0x09cd6614, WebCore::RenderLayerCompositor::OverlapMap * overlapMap=0x001bd984, WebCore::CompositingState & compositingState={...}, bool & layersChanged=false) Line 815 C++ WebKit.dll!WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer * ancestorLayer=0x00000000, WebCore::RenderLayer * layer=0x0556e184, WebCore::RenderLayerCompositor::OverlapMap * overlapMap=0x001bd984, WebCore::CompositingState & compositingState={...}, bool & layersChanged=false) Line 815 C++ WebKit.dll!WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType updateType=CompositingUpdateAfterLayout, WebCore::RenderLayer * updateRoot=0x0556e184) Line 407 C++ WebKit.dll!WebCore::FrameView::updateCompositingLayersAfterLayout() Line 654 C++ WebKit.dll!WebCore::FrameView::layout(bool allowSubtree=true) Line 1130 C++ WebKit.dll!WebCore::FrameView::visibleContentsResized() Line 1884 C++ WebKit.dll!WebCore::ScrollView::updateScrollbars(const WebCore::IntSize & desiredOffset={...}) Line 540 + 0x12 bytes C++ WebKit.dll!WebCore::ScrollView::setContentsSize(const WebCore::IntSize & newSize={...}) Line 305 C++ WebKit.dll!WebCore::FrameView::setContentsSize(const WebCore::IntSize & size={...}) Line 499 C++ WebKit.dll!WebCore::FrameView::adjustViewSize() Line 527 + 0x16 bytes C++ WebKit.dll!WebCore::FrameView::layout(bool allowSubtree=true) Line 1114 C++ WebKit.dll!WebCore::Document::updateLayout() Line 1854 C++ WebKit.dll!WebCore::Document::updateLayoutIgnorePendingStylesheets() Line 1887 C++ WebKit.dll!WebCore::Element::clientWidth() Line 430 C++ WebKit.dll!WebCore::jsElementClientWidth(JSC::ExecState * exec=0x05b10040, JSC::JSValue slotBase={...}, JSC::PropertyName __formal={...}) Line 348 + 0x8 bytes C++ JavaScriptCore.dll!JSC::PropertySlot::getValue(JSC::ExecState * exec=0x05b10040, JSC::PropertyName propertyName={...}) Line 75 + 0x28 bytes C++ JavaScriptCore.dll!JSC::JSValue::get(JSC::ExecState * exec=0x05b10040, JSC::PropertyName propertyName={...}, JSC::PropertySlot & slot={...}) Line 819 + 0x14 bytes C++ JavaScriptCore.dll!cti_op_get_by_id(void * * args=0x001be0cc) Line 1677 C++ JavaScriptCore.dll!@cti_op_create_this@4() + 0x16f bytes C++ JavaScriptCore.dll!JSC::JITCode::execute(JSC::RegisterFile * registerFile=0x054a6834, JSC::ExecState * callFrame=0x05b10040, JSC::JSGlobalData * globalData=0x054ea658) Line 127 + 0x2d bytes C++ JavaScriptCore.dll!JSC::Interpreter::executeCall(JSC::ExecState * callFrame=0x02dfc6c8, JSC::JSObject * function=0x063fb990, JSC::CallType callType=CallTypeJS, const JSC::CallData & callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList & args={...}) Line 1305 + 0x2a bytes C++ JavaScriptCore.dll!JSC::call(JSC::ExecState * exec=0x02dfc6c8, JSC::JSValue functionObject={...}, JSC::CallType callType=CallTypeJS, const JSC::CallData & callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList & args={...}) Line 39 + 0x3c bytes C++ WebKit.dll!WebCore::JSMainThreadExecState::call(JSC::ExecState * exec=0x02dfc6c8, JSC::JSValue functionObject={...}, JSC::CallType callType=CallTypeJS, const JSC::CallData & callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList & args={...}) Line 56 + 0x29 bytes C++ WebKit.dll!WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext * scriptExecutionContext=0x06faee64, WebCore::Event * event=0x06fa2208) Line 133 + 0x64 bytes C++ WebKit.dll!WebCore::EventTarget::fireEventListeners(WebCore::Event * event=0x06fa2208, WebCore::EventTargetData * d=0x09d0f4e0, WTF::Vector<WebCore::RegisteredEventListener,1> & entry=[1]({listener=0x00fb9180 {m_jsFunction={...} m_wrapper={...} m_isAttribute=false ...} useCapture=false })) Line 231 + 0x22 bytes C++ WebKit.dll!WebCore::EventTarget::fireEventListeners(WebCore::Event * event=0x06fa2208) Line 200 C++ WebKit.dll!WebCore::DOMWindow::dispatchEvent(WTF::PassRefPtr<WebCore::Event> prpEvent={...}, WTF::PassRefPtr<WebCore::EventTarget> prpTarget={...}) Line 1669 + 0x11 bytes C++ WebKit.dll!WebCore::DOMWindow::dispatchLoadEvent() Line 1644 C++ WebKit.dll!WebCore::Document::dispatchWindowLoadEvent() Line 3983 C++ WebKit.dll!WebCore::Document::implicitClose() Line 2446 C++ WebKit.dll!WebCore::FrameLoader::checkCallImplicitClose() Line 762 C++ WebKit.dll!WebCore::FrameLoader::checkCompleted() Line 709 C++ WebKit.dll!WebCore::FrameLoader::finishedParsing() Line 642 C++ WebKit.dll!WebCore::Document::finishedParsing() Line 4733 C++ WebKit.dll!WebCore::HTMLTreeBuilder::finished() Line 2807 + 0x18 bytes C++ WebKit.dll!WebCore::HTMLDocumentParser::end() Line 382 C++ WebKit.dll!WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd() Line 391 C++ WebKit.dll!WebCore::HTMLDocumentParser::prepareToStopParsing() Line 154 C++ WebKit.dll!WebCore::HTMLDocumentParser::attemptToEnd() Line 402 + 0xf bytes C++ WebKit.dll!WebCore::HTMLDocumentParser::finish() Line 430 C++ WebKit.dll!WebCore::DocumentWriter::end() Line 241 + 0x1d bytes C++ WebKit.dll!WebCore::DocumentLoader::finishedLoading() Line 300 C++ WebKit.dll!WebCore::MainResourceLoader::didFinishLoading(double finishTime=0.00000000000000000) Line 545 C++ WebKit.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal=0x06f9eca8, double finishTime=0.00000000000000000) Line 435 + 0x18 bytes C++ WebKit.dll!WebCore::didFinishLoading(_CFURLConnection * conn=0x06f9ee38, const void * clientInfo=0x06f9eca8) Line 301 + 0x26 bytes C++ CFNetwork.dll!URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue * preQ=0x001be8b0) Line 1739 + 0x2b bytes C++ CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<enum XClientEvent,XClientEventParams> * e=0x09cd67fc, long count=3) Line 2256 C++ CFNetwork.dll!URLConnectionClient::processEvents() Line 360 + 0x21 bytes C++ CFNetwork.dll!URLConnectionWndProc(HWND__ * hWnd=0x00260356, unsigned int message=1231, unsigned int wParam=117042744, long lParam=0) Line 109 C++ user32.dll!_InternalCallWinProc@20() + 0x23 bytes user32.dll!_UserCallWinProcCheckWow@32() + 0xd3 bytes user32.dll!_DispatchMessageWorker@8() + 0xee bytes user32.dll!_DispatchMessageW@4() + 0xf bytes DumpRenderTree.dll!runTest(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & testPathOrURL="H:\home\jhoneycutt\src\OpenSource\LayoutTests\compositing\rtl\rtl-fixed-overflow-scrolled.html") Line 1049 + 0xf bytes C++ DumpRenderTree.dll!dllLauncherEntryPoint(int argc=2, const char * * argv=0x010a6f58) Line 1431 + 0x28 bytes C++ DumpRenderTree.exe!main(int argc=2, const char * * argv=0x010a6f58) Line 198 + 0x10 bytes C++ DumpRenderTree.exe!__tmainCRTStartup() Line 597 + 0x17 bytes C kernel32.dll!@BaseThreadInitThunk@12() + 0xe bytes ntdll.dll!___RtlUserThreadStart@8() + 0x23 bytes ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes
Jessie Berlin
Comment 3 2012-06-01 14:08:20 PDT
Updated the Skipped list in http://trac.webkit.org/changeset/119279. However, I am a bit worried about it, since at least one of the tests I had to add to the Skipped list seems a bit out of place (compositing/iframes/overlapped-nested-iframes.html). Maybe some of these tests are causing failures later on?
Simon Fraser (smfr)
Comment 4 2012-06-01 14:08:49 PDT
I would be curious about how different the two rects are. Is this just rounding error, or something more serious?
Jessie Berlin
Comment 5 2012-06-01 14:33:20 PDT
For those watching at home: Simon and I looked at one of these in the debugger briefly. The rects were very different (one was at 0,0 with size 50,50, the other at 18, 20-something with size 100,100). The tests don't assert when loaded into MiniBrowser, so maybe this is something related to DRT?
Simon Fraser (smfr)
Comment 6 2012-08-20 11:16:37 PDT
Probably the same underlying cause as bug 92464.
Note You need to log in before you can comment on or make changes to this bug.