Bug 83185

Summary: Layout Test fast/writing-mode/relative-positioning-percentages.html is crashing
Product: WebKit Reporter: Dimitri Glazkov (Google) <dglazkov>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: schenney, zimmermann
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   

Description Dimitri Glazkov (Google) 2012-04-04 10:56:50 PDT
Can't point out a revision that could've caused it, but the stack trace looks like this:

crash log for DumpRenderTree (pid 1648):
STDOUT: <empty>
STDERR: ASSERTION FAILED: !needsLayout()
STDERR: /b/build/slave/webkit-mac-latest-dbg/build/src/third_party/WebKit/Source/WebCore/WebCore.gyp/../page/FrameView.cpp(2986) : virtual void WebCore::FrameView::paintContents(WebCore::GraphicsContext *, const WebCore::IntRect &)
STDERR: 1   0x6125706a WebCore::FrameView::paintContents(WebCore::GraphicsContext*, WebCore::IntRect const&)
STDERR: 2   0x604a326c WebCore::ScrollView::paint(WebCore::GraphicsContext*, WebCore::IntRect const&)
STDERR: 3   0x61d7d8a3 WebCore::SVGImage::draw(WebCore::GraphicsContext*, WebCore::FloatRect const&, WebCore::FloatRect const&, WebCore::ColorSpace, WebCore::CompositeOperator)
STDERR: 4   0x61d7d2ee WebCore::SVGImage::drawSVGToImageBuffer(WebCore::ImageBuffer*, WebCore::IntSize const&, float, WebCore::SVGImage::ShouldClearBuffer)
STDERR: 5   0x61d7350d WebCore::SVGImageCache::redraw()
STDERR: 6   0x61d73315 WebCore::SVGImageCache::imageContentChanged()
STDERR: 7   0x6118838b WebCore::CachedImage::changedInRect(WebCore::Image const*, WebCore::IntRect const&)
STDERR: 8   0x61188406 non-virtual thunk to WebCore::CachedImage::changedInRect(WebCore::Image const*, WebCore::IntRect const&)
STDERR: 9   0x61d82a65 WebCore::SVGImageChromeClient::invalidateContentsAndRootView(WebCore::IntRect const&, bool)
STDERR: 10  0x611ce91e WebCore::Chrome::invalidateContentsAndRootView(WebCore::IntRect const&, bool)
STDERR: 11  0x604a241e WebCore::ScrollView::repaintContentRectangle(WebCore::IntRect const&, bool)
STDERR: 12  0x61253239 WebCore::FrameView::doDeferredRepaints()
STDERR: 13  0x6124f392 WebCore::FrameView::endDeferredRepaints()
STDERR: 14  0x6124dad1 WebCore::FrameView::layout(bool)
STDERR: 15  0x61249092 WebCore::FrameView::layoutTimerFired(WebCore::Timer<WebCore::FrameView>*)
STDERR: 16  0x6126b4b7 WebCore::Timer<WebCore::FrameView>::fired()
STDERR: 17  0x604b918e WebCore::ThreadTimers::sharedTimerFiredInternal()
STDERR: 18  0x604b8f1f WebCore::ThreadTimers::sharedTimerFired()
STDERR: 19  0x621677f9 webkit_glue::WebKitPlatformSupportImpl::DoTimeout()
STDERR: 20  0x62168984 base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>::Run(webkit_glue::WebKitPlatformSupportImpl*)
STDERR: 21  0x62168883 base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>, void ()(webkit_glue::WebKitPlatformSupportImpl*)>::MakeItSo(base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>, webkit_glue::WebKitPlatformSupportImpl*)
STDERR: 22  0x621687c3 base::internal::Invoker<1, base::internal::BindState<base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>, void ()(webkit_glue::WebKitPlatformSupportImpl*), void ()(base::internal::UnretainedWrapper<webkit_glue::WebKitPlatformSupportImpl>)>, void ()(webkit_glue::WebKitPlatformSupportImpl*)>::Run(base::internal::BindStateBase*)
STDERR: 23  0x5ec532eb base::Callback<void ()()>::Run() const
STDERR: 24  0x5ed0233b base::Timer::RunScheduledTask()
STDERR: 25  0x5ed02549 base::BaseTimerTaskInternal::Run()
STDERR: 26  0x5ed02e14 base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>::Run(base::BaseTimerTaskInternal*)
STDERR: 27  0x5ed02d13 base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>, void ()(base::BaseTimerTaskInternal*)>::MakeItSo(base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>, base::BaseTimerTaskInternal*)
STDERR: 28  0x5ed02c4e base::internal::Invoker<1, base::internal::BindState<base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>, void ()(base::BaseTimerTaskInternal*), void ()(base::internal::OwnedWrapper<base::BaseTimerTaskInternal>)>, void ()(base::BaseTimerTaskInternal*)>::Run(base::internal::BindStateBase*)
STDERR: 29  0x5ec532eb base::Callback<void ()()>::Run() const
STDERR: 30  0x5ec50a0e MessageLoop::RunTask(base::PendingTask const&)
STDERR: 31  0x5ec50db1 MessageLoop::DeferOrRunPendingTask(base::PendingTask const&)
STDERR: [1648:-1610537664:2418291914643:ERROR:process_util_posix.cc(142)] Received signal 11
STDERR: 	0   DumpRenderTree                      0x5ebee86f base::debug::StackTrace::StackTrace() + 63
STDERR: 	1   DumpRenderTree                      0x5ebee80b base::debug::StackTrace::StackTrace() + 43
STDERR: 	2   DumpRenderTree                      0x5eca34e7 base::(anonymous namespace)::StackDumpSignalHandler(int, __siginfo*, __darwin_ucontext*) + 295
STDERR: 	3   libSystem.B.dylib                   0x9006a05b _sigtramp + 43
STDERR: 	4   ???                                 0xffffffff 0x0 + 4294967295
STDERR: 	5   DumpRenderTree                      0x604a326c WebCore::ScrollView::paint(WebCore::GraphicsContext*, WebCore::IntRect const&) + 1068
STDERR: 	6   DumpRenderTree                      0x61d7d8a3 WebCore::SVGImage::draw(WebCore::GraphicsContext*, WebCore::FloatRect const&, WebCore::FloatRect const&, WebCore::ColorSpace, WebCore::CompositeOperator) + 1107
STDERR: 	7   DumpRenderTree                      0x61d7d2ee WebCore::SVGImage::drawSVGToImageBuffer(WebCore::ImageBuffer*, WebCore::IntSize const&, float, WebCore::SVGImage::ShouldClearBuffer) + 1006
STDERR: 	8   DumpRenderTree                      0x61d7350d WebCore::SVGImageCache::redraw() + 445
STDERR: 	9   DumpRenderTree                      0x61d73315 WebCore::SVGImageCache::imageContentChanged() + 293
STDERR: 	10  DumpRenderTree                      0x6118838b WebCore::CachedImage::changedInRect(WebCore::Image const*, WebCore::IntRect const&) + 155
STDERR: 	11  DumpRenderTree                      0x61188406 non-virtual thunk to WebCore::CachedImage::changedInRect(WebCore::Image const*, WebCore::IntRect const&) + 54
STDERR: 	12  DumpRenderTree                      0x61d82a65 WebCore::SVGImageChromeClient::invalidateContentsAndRootView(WebCore::IntRect const&, bool) + 165
STDERR: 	13  DumpRenderTree                      0x611ce91e WebCore::Chrome::invalidateContentsAndRootView(WebCore::IntRect const&, bool) + 94
STDERR: 	14  DumpRenderTree                      0x604a241e WebCore::ScrollView::repaintContentRectangle(WebCore::IntRect const&, bool) + 414
STDERR: 	15  DumpRenderTree                      0x61253239 WebCore::FrameView::doDeferredRepaints() + 345
STDERR: 	16  DumpRenderTree                      0x6124f392 WebCore::FrameView::endDeferredRepaints() + 402
STDERR: 	17  DumpRenderTree                      0x6124dad1 WebCore::FrameView::layout(bool) + 3441
STDERR: 	18  DumpRenderTree                      0x61249092 WebCore::FrameView::layoutTimerFired(WebCore::Timer<WebCore::FrameView>*) + 66
STDERR: 	19  DumpRenderTree                      0x6126b4b7 WebCore::Timer<WebCore::FrameView>::fired() + 135
STDERR: 	20  DumpRenderTree                      0x604b918e WebCore::ThreadTimers::sharedTimerFiredInternal() + 334
STDERR: 	21  DumpRenderTree                      0x604b8f1f WebCore::ThreadTimers::sharedTimerFired() + 47
STDERR: 	22  DumpRenderTree                      0x621677f9 webkit_glue::WebKitPlatformSupportImpl::DoTimeout() + 73
STDERR: 	23  DumpRenderTree                      0x62168984 base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>::Run(webkit_glue::WebKitPlatformSupportImpl*) + 132
STDERR: 	24  DumpRenderTree                      0x62168883 base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>, void ()(webkit_glue::WebKitPlatformSupportImpl*)>::MakeItSo(base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>, webkit_glue::WebKitPlatformSupportImpl*) + 67
STDERR: 	25  DumpRenderTree                      0x621687c3 base::internal::Invoker<1, base::internal::BindState<base::internal::RunnableAdapter<void (webkit_glue::WebKitPlatformSupportImpl::*)()>, void ()(webkit_glue::WebKitPlatformSupportImpl*), void ()(base::internal::UnretainedWrapper<webkit_glue::WebKitPlatformSupportImpl>)>, void ()(webkit_glue::WebKitPlatformSupportImpl*)>::Run(base::internal::BindStateBase*) + 115
STDERR: 	26  DumpRenderTree                      0x5ec532eb base::Callback<void ()()>::Run() const + 75
STDERR: 	27  DumpRenderTree                      0x5ed0233b base::Timer::RunScheduledTask() + 363
STDERR: 	28  DumpRenderTree                      0x5ed02549 base::BaseTimerTaskInternal::Run() + 89
STDERR: 	29  DumpRenderTree                      0x5ed02e14 base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>::Run(base::BaseTimerTaskInternal*) + 132
STDERR: 	30  DumpRenderTree                      0x5ed02d13 base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>, void ()(base::BaseTimerTaskInternal*)>::MakeItSo(base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>, base::BaseTimerTaskInternal*) + 67
STDERR: 	31  DumpRenderTree                      0x5ed02c4e base::internal::Invoker<1, base::internal::BindState<base::internal::RunnableAdapter<void (base::BaseTimerTaskInternal::*)()>, void ()(base::BaseTimerTaskInternal*), void ()(base::internal::OwnedWrapper<base::BaseTimerTaskInternal>)>, void ()(base::BaseTimerTaskInternal*)>::Run(base::internal::BindStateBase*) + 110
STDERR: 	32  DumpRenderTree                      0x5ec532eb base::Callback<void ()()>::Run() const + 75
STDERR: 	33  DumpRenderTree                      0x5ec50a0e MessageLoop::RunTask(base::PendingTask const&) + 846
STDERR: 	34  DumpRenderTree                      0x5ec50db1 MessageLoop::DeferOrRunPendingTask(base::PendingTask const&) + 97
STDERR: 	35  DumpRenderTree                      0x5ec50fe8 MessageLoop::DoWork() + 312
STDERR: 	36  DumpRenderTree                      0x5ebc116b base::MessagePumpCFRunLoopBase::RunWork() + 107
STDERR: 	37  DumpRenderTree                      0x5ebc0862 base::MessagePumpCFRunLoopBase::RunWorkSource(void*) + 50
STDERR: 	38  CoreFoundation                      0x91d8942b __CFRunLoopDoSources0 + 1563
STDERR: 	39  CoreFoundation                      0x91d86eef __CFRunLoopRun + 1071
STDERR: 	40  CoreFoundation                      0x91d863c4 CFRunLoopRunSpecific + 452
STDERR: 	41  CoreFoundation                      0x91d861f1 CFRunLoopRunInMode + 97
STDERR: 	42  HIToolbox                           0x962d5e04 RunCurrentEventLoopInMode + 392
STDERR: 	43  HIToolbox                           0x962d5bb9 ReceiveNextEventCommon + 354
STDERR: 	44  HIToolbox                           0x962d5a3e BlockUntilNextEventMatchingListInMode + 81
STDERR: 	45  AppKit                              0x959a7595 _DPSNextEvent + 847
STDERR: 	46  AppKit                              0x959a6dd6 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 156
STDERR: 	47  AppKit                              0x959691f3 -[NSApplication run] + 821
STDERR: 	48  DumpRenderTree                      0x5ebc1e8e base::MessagePumpNSApplication::DoRun(base::MessagePump::Delegate*) + 350
STDERR: 	49  DumpRenderTree                      0x5ebc0e5d base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 189
STDERR: 	50  DumpRenderTree                      0x5ec50373 MessageLoop::RunInternal() + 291
STDERR: 	51  DumpRenderTree                      0x5ec4f68b MessageLoop::RunHandler() + 43
STDERR: 	52  DumpRenderTree                      0x5ec4f5d0 MessageLoop::Run() + 64
STDERR: 	53  DumpRenderTree                      0x5e805b57 webkit_support::RunMessageLoop() + 39
STDERR: 	54  DumpRenderTree                      0x5e4a3ed2 TestShell::waitTestFinished() + 386
STDERR: 	55  DumpRenderTree                      0x5e494dcf TestShell::runFileTest(TestParams const&) + 975
STDERR: 	56  DumpRenderTree                      0x5e445f33 runTest(TestShell&, TestParams&, std::string const&, bool) + 1395
STDERR: 	57  DumpRenderTree                      0x5e4457fa main + 3722
STDERR: 	58  DumpRenderTree                      0x5e4248fe start + 54
STDERR: ax: bbadbeef, bx: 1aa3cc60, cx: c2a5da9, dx: c2a5da9
STDERR: di: 626511f7, si: 626249e6, bp: bfffc288, sp: bfffc1b0, ss: 23, flags: 210282
STDERR: ip: 61257074, cs: 1b, ds: 23, es: 23, fs: 0, gs: f
Comment 2 Stephen Chenney 2012-04-04 13:31:21 PDT
We're right at this minute (actually, for the last two days), trying to track this down. Right now we've got it down to sensitivity to repaint and layout timer firing order. But basically the SVGImage code is trying to layout the FrameView to a new size but it's happening inside layout so the FrameView does not in fact lay out.

I also do not know why SVG is in there. Something related to the image cache, as far as I can tell.

Basically, a whole slew of Mac Chromium tests are flakey right now, with Debug builds tending to crash with this particular stack while Release just fails on image.
Comment 3 Stephen Chenney 2012-04-04 13:31:49 PDT
Oh, and could you file all of the crashes with this stack in 82232.
Comment 4 Stephen Chenney 2012-04-05 08:10:07 PDT
This is tracked in 82232, which in turn is dependent on a real fix for 78315.

*** This bug has been marked as a duplicate of bug 82232 ***