Bug 88128 - [Win] ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(FloatQuad(result).boundingBox())) failed in RenderGeometryMap::absoluteRect
Summary: [Win] ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(Float...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Windows 7
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar, LayoutTestFailure
Depends on:
Blocks:
 
Reported: 2012-06-01 13:21 PDT by Jessie Berlin
Modified: 2020-02-18 15:07 PST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jessie Berlin 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
Comment 1 Radar WebKit Bug Importer 2012-06-01 13:22:03 PDT
<rdar://problem/11577522>
Comment 2 Jessie Berlin 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
Comment 3 Jessie Berlin 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?
Comment 4 Simon Fraser (smfr) 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?
Comment 5 Jessie Berlin 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?
Comment 6 Simon Fraser (smfr) 2012-08-20 11:16:37 PDT
Probably the same underlying cause as bug 92464.