Bug 29350

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:
Description Flags
Remove Assertions none

Brian Weinstein
Reported 2009-09-17 15:35:16 PDT
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
Attachments
Remove Assertions (1.99 KB, patch)
2009-09-17 15:59 PDT, Brian Weinstein
no flags
Brian Weinstein
Comment 1 2009-09-17 15:37:43 PDT
The function calling the issues is m_verticalScrollbar->invalidate(), and this is happening on Windows.
Brian Weinstein
Comment 2 2009-09-17 15:59:03 PDT
Created attachment 39731 [details] Remove Assertions
Adam Roben (:aroben)
Comment 3 2009-09-17 16:00:17 PDT
Comment on attachment 39731 [details] Remove Assertions r=me, but we should leave this bug open to track fixing the bad invalidation.
Brian Weinstein
Comment 4 2009-09-17 16:05:06 PDT
Path to remove assertions committed in http://trac.webkit.org/changeset/48496.
Note You need to log in before you can comment on or make changes to this bug.