Bug 88128
Summary: | [Win] ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(FloatQuad(result).boundingBox())) failed in RenderGeometryMap::absoluteRect | ||
---|---|---|---|
Product: | WebKit | Reporter: | Jessie Berlin <jberlin> |
Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> |
Status: | NEW | ||
Severity: | Normal | CC: | bdakin, jberlin, simon.fraser, thorton, webkit-bug-importer |
Priority: | P2 | Keywords: | InRadar, LayoutTestFailure |
Version: | 528+ (Nightly build) | ||
Hardware: | Unspecified | ||
OS: | Windows 7 | ||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=151030 |
Jessie Berlin
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 | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/11577522>
Jessie Berlin
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
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)
I would be curious about how different the two rects are. Is this just rounding error, or something more serious?
Jessie Berlin
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)
Probably the same underlying cause as bug 92464.