Summary: | Assertion failure from invalidating scrollbars before they are placed | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Brian Weinstein <bweinstein> | ||||
Component: | WebCore Misc. | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | NEW --- | ||||||
Severity: | Normal | CC: | aroben, hyatt | ||||
Priority: | P2 | ||||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | PC | ||||||
OS: | Windows 7 | ||||||
Attachments: |
|
The function calling the issues is m_verticalScrollbar->invalidate(), and this is happening on Windows. Created attachment 39731 [details]
Remove Assertions
Comment on attachment 39731 [details]
Remove Assertions
r=me, but we should leave this bug open to track fixing the bad invalidation.
Path to remove assertions committed in http://trac.webkit.org/changeset/48496. |
When running the layout tests in fast/frames on a Windows debug build, an assertion is hit trying to paint a rect that isn't in our client rect. This is caused by us trying to repaint a scrollbar that hasn't been laid out yet. Backtrace: WebKit_debug.dll!WebView::addToDirtyRegion(const WebCore::IntRect & dirtyRect={...}) Line 729 + 0x3a bytes C++ WebKit_debug.dll!WebView::repaint(const WebCore::IntRect & windowRect={...}, bool contentChanged=true, bool immediate=false, bool repaintContentOnly=false) Line 681 C++ WebKit_debug.dll!WebChromeClient::repaint(const WebCore::IntRect & windowRect={...}, bool contentChanged=true, bool immediate=false, bool repaintContentOnly=false) Line 451 C++ WebKit_debug.dll!WebCore::Chrome::repaint(const WebCore::IntRect & windowRect={...}, bool contentChanged=true, bool immediate=false, bool repaintContentOnly=false) Line 72 + 0x28 bytes C++ WebKit_debug.dll!WebCore::FrameView::invalidateRect(const WebCore::IntRect & rect={...}) Line 278 + 0x32 bytes C++ WebKit_debug.dll!WebCore::FrameView::invalidateScrollbarRect(WebCore::Scrollbar * scrollbar=0x038c8110, const WebCore::IntRect & rect={...}) Line 1360 + 0x17 bytes C++ WebKit_debug.dll!WebCore::Scrollbar::invalidateRect(const WebCore::IntRect & rect={...}) Line 449 + 0x1d bytes C++ WebKit_debug.dll!WebCore::Widget::invalidate() Line 140 + 0x3a bytes C++ > WebKit_debug.dll!WebCore::ScrollView::setScrollbarsSuppressed(bool suppressed=false, bool repaintOnUnsuppress=true) Line 630 C++ WebKit_debug.dll!WebCore::FrameView::layout(bool allowSubtree=true) Line 607 C++ WebKit_debug.dll!WebCore::FrameView::layoutTimerFired(WebCore::Timer<WebCore::FrameView> * __formal=0x038b86f8) Line 970 C++ WebKit_debug.dll!WebCore::Timer<WebCore::FrameView>::fired() Line 98 + 0x29 bytes C++ WebKit_debug.dll!WebCore::ThreadTimers::sharedTimerFiredInternal() Line 112 + 0xf bytes C++ WebKit_debug.dll!WebCore::ThreadTimers::sharedTimerFired() Line 91 C++ WebKit_debug.dll!WebCore::TimerWindowWndProc(HWND__ * hWnd=0x004605f2, unsigned int message=0x0000c14f, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 102 + 0x8 bytes C++ user32.dll!_InternalCallWinProc@20() + 0x23 bytes user32.dll!_UserCallWinProcCheckWow@32() + 0xb7 bytes user32.dll!_DispatchMessageWorker@8() + 0xed bytes user32.dll!_DispatchMessageW@4() + 0xf bytes DumpRenderTree_debug.exe!runTest(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & testPathOrURL="C:\cygwin\home\bweinstein\OpenSource\LayoutTests\fast\frames\frame-limit.html") Line 871 + 0xf bytes C++ DumpRenderTree_debug.exe!main(int argc=0x00000002, char * * argv=0x00a0c570) Line 1204 + 0x28 bytes C++ DumpRenderTree_debug.exe!__tmainCRTStartup() Line 597 + 0x19 bytes C DumpRenderTree_debug.exe!mainCRTStartup() Line 414 C kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes ntdll.dll!___RtlUserThreadStart@8() + 0x27 bytes ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes Dirty and Client Rect: dirtyRect {m_location={...} m_size={...} } m_location: {m_x=-15 m_y=0 } m_size: {m_width=15 m_height=0 } clientRect {top=0 bottom=600 left=0 right=800} left: 0 top: 0 right: 800 bottom: 600