Bug 105988 - [Mac] Some inspector tests intermittently assert in InspectorOverlay::paint
Summary: [Mac] Some inspector tests intermittently assert in InspectorOverlay::paint
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Inspector (Deprecated) (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P1 Major
Assignee: Tim Horton
URL:
Keywords: InRadar, LayoutTestFailure
Depends on:
Blocks:
 
Reported: 2013-01-02 19:21 PST by Ryosuke Niwa
Modified: 2013-08-20 13:22 PDT (History)
15 users (show)

See Also:


Attachments
Patch (1.51 KB, patch)
2013-08-20 12:22 PDT, Tim Horton
joepeck: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ryosuke Niwa 2013-01-02 19:21:32 PST
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&tests=inspector%2Fdebugger%2Fpause-in-internal-script.html

http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r138686%20(5395)/inspector/debugger/watch-expressions-panel-switch-crash-log.txt

0   com.apple.WebCore             	0x0000000104fec88e WebCore::InspectorOverlay::paint(WebCore::GraphicsContext&) + 270 (InspectorOverlay.cpp:213)
1   com.apple.WebCore             	0x0000000104f591af WebCore::InspectorController::drawHighlight(WebCore::GraphicsContext&) const + 47 (InspectorController.cpp:310)
2   com.apple.WebKit2             	0x00000001023bf429 WebKit::WebInspectorClient::drawRect(WebKit::PageOverlay*, WebCore::GraphicsContext&, WebCore::IntRect const&) + 57 (WebInspectorClient.cpp:128)
3   com.apple.WebKit2             	0x00000001023bf46f non-virtual thunk to WebKit::WebInspectorClient::drawRect(WebKit::PageOverlay*, WebCore::GraphicsContext&, WebCore::IntRect const&) + 63
4   com.apple.WebKit2             	0x000000010229fae6 WebKit::PageOverlay::drawRect(WebCore::GraphicsContext&, WebCore::IntRect const&) + 198 (PageOverlay.cpp:120)
5   com.apple.WebKit2             	0x00000001023f4f3d WebKit::WebPage::drawPageOverlay(WebCore::GraphicsContext&, WebCore::IntRect const&) + 189 (WebPage.cpp:1126)
6   com.apple.WebKit2             	0x00000001021e7dcf WebKit::DrawingAreaImpl::display(WebKit::UpdateInfo&) + 1695 (DrawingAreaImpl.cpp:722)
7   com.apple.WebKit2             	0x00000001021e6f8e WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState() + 286 (DrawingAreaImpl.cpp:427)
8   com.apple.WebKit2             	0x00000001021e770b WebKit::DrawingAreaImpl::updateBackingStoreState(unsigned long long, bool, float, WebCore::IntSize const&, WebCore::IntSize const&) + 875 (DrawingAreaImpl.cpp:414)
9   com.apple.WebKit2             	0x00000001021ecf81 void CoreIPC::callMemberFunction<WebKit::DrawingArea, void (WebKit::DrawingArea::*)(unsigned long long, bool, float, WebCore::IntSize const&, WebCore::IntSize const&), unsigned long long, bool, float, WebCore::IntSize, WebCore::IntSize>(CoreIPC::Arguments5<unsigned long long, bool, float, WebCore::IntSize, WebCore::IntSize> const&, WebKit::DrawingArea*, void (WebKit::DrawingArea::*)(unsigned long long, bool, float, WebCore::IntSize const&, WebCore::IntSize const&)) + 193 (HandleMessage.h:46)
10  com.apple.WebKit2             	0x00000001021ec082 void CoreIPC::handleMessage<Messages::DrawingArea::UpdateBackingStoreState, WebKit::DrawingArea, void (WebKit::DrawingArea::*)(unsigned long long, bool, float, WebCore::IntSize const&, WebCore::IntSize const&)>(CoreIPC::MessageDecoder&, WebKit::DrawingArea*, void (WebKit::DrawingArea::*)(unsigned long long, bool, float, WebCore::IntSize const&, WebCore::IntSize const&)) + 114 (HandleMessage.h:323)
11  com.apple.WebKit2             	0x00000001021ebaa0 WebKit::DrawingArea::didReceiveDrawingAreaMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) + 160 (DrawingAreaMessageReceiver.cpp:44)
12  com.apple.WebKit2             	0x00000001023f9e01 WebKit::WebPage::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) + 129 (WebPage.cpp:2949)
13  com.apple.WebKit2             	0x00000001023f9efd non-virtual thunk to WebKit::WebPage::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) + 61
14  com.apple.WebKit2             	0x000000010256dd8a CoreIPC::MessageReceiverMap::dispatchMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) + 634 (MessageReceiverMap.cpp:87)
15  com.apple.WebKit2             	0x00000001024cfc1d WebKit::WebProcess::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) + 77 (WebProcess.cpp:590)
16  com.apple.WebKit2             	0x00000001021c65c8 CoreIPC::Connection::dispatchMessage(CoreIPC::MessageID, CoreIPC::MessageDecoder&) + 72 (Connection.cpp:662)
17  com.apple.WebKit2             	0x00000001021c3a8e CoreIPC::Connection::dispatchMessage(CoreIPC::Connection::Message<CoreIPC::MessageDecoder>&) + 318 (Connection.cpp:684)
18  com.apple.WebKit2             	0x00000001021c656b CoreIPC::Connection::dispatchOneMessage() + 203 (Connection.cpp:711)
19  com.apple.WebKit2             	0x00000001021cde52 WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>::operator()(CoreIPC::Connection*) + 114 (Functional.h:173)
20  com.apple.WebKit2             	0x00000001021cddd5 WTF::BoundFunctionImpl<WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>, void (CoreIPC::Connection*)>::operator()() + 53 (Functional.h:405)
21  com.apple.WebCore             	0x0000000105b03e39 WTF::Function<void ()>::operator()() const + 137 (Functional.h:613)
22  com.apple.WebCore             	0x0000000105b03b3b WebCore::RunLoop::performWork() + 395 (RunLoop.cpp:89)
23  com.apple.WebCore             	0x0000000105b04f8e WebCore::RunLoop::performWork(void*) + 62 (RunLoopCF.cpp:66)
24  com.apple.CoreFoundation      	0x00007fff8dedf101 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
25  com.apple.CoreFoundation      	0x00007fff8dedea25 __CFRunLoopDoSources0 + 245
26  com.apple.CoreFoundation      	0x00007fff8df01dc5 __CFRunLoopRun + 789
27  com.apple.CoreFoundation      	0x00007fff8df016b2 CFRunLoopRunSpecific + 290
28  com.apple.HIToolbox           	0x00007fff867b00a4 RunCurrentEventLoopInMode + 209
29  com.apple.HIToolbox           	0x00007fff867afe42 ReceiveNextEventCommon + 356
30  com.apple.HIToolbox           	0x00007fff867afcd3 BlockUntilNextEventMatchingListInMode + 62
31  com.apple.AppKit              	0x00007fff897ba613 _DPSNextEvent + 685
32  com.apple.AppKit              	0x00007fff897b9ed2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
33  com.apple.AppKit              	0x00007fff897b1283 -[NSApplication run] + 517
34  com.apple.WebCore             	0x0000000105b05bec WebCore::RunLoop::run() + 92 (RunLoopMac.mm:37)
35  com.apple.WebKit2             	0x00000001024ea5b3 WebKit::WebProcessMain(WebKit::CommandLine const&) + 4451 (WebProcessMainMac.mm:187)
Comment 1 Ryosuke Niwa 2013-01-02 19:25:55 PST
Added a flaky crash expectation in http://trac.webkit.org/changeset/138694.
Comment 2 Ryosuke Niwa 2013-01-04 10:29:56 PST
Another one: http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r138805%20(4304)/results.html

This bug is preventing us from making debug bots green.
Comment 3 Radar WebKit Bug Importer 2013-01-04 10:30:52 PST
<rdar://problem/12958038>
Comment 4 Radar WebKit Bug Importer 2013-01-04 10:30:53 PST
<rdar://problem/12958039>
Comment 5 Jessie Berlin 2013-04-18 18:14:57 PDT
This is happening on Lion Debug WK2 tests as well:

http://build.webkit.org/results/Apple%20Lion%20Debug%20WK2%20(Tests)/r148713%20(8976)/inspector/debugger/script-extract-outline-crash-log.txt

I am going to wait to see that particular test again before marking as flakey.
Comment 6 Jer Noble 2013-08-16 09:57:04 PDT
This test is now consistently flakey on Lion & Mountain Lion WK1 & WK2 bots.
Comment 7 Jer Noble 2013-08-16 11:19:33 PDT
Added flakiness expectations for all Mac platforms in http://trac.webkit.org/changeset/154189.
Comment 8 Tim Horton 2013-08-20 12:02:25 PDT
I tried to track down where the layout is being invalidated and not performed, but failed (the build with logging was far, far too slow, and I couldn't reproduce the problem anymore).

I don't see any particular reason why we can't just do layout in InspectorOverlay::paint if it's stale. Anyone?
Comment 9 Tim Horton 2013-08-20 12:22:09 PDT
Created attachment 209218 [details]
Patch
Comment 10 Joseph Pecoraro 2013-08-20 13:12:16 PDT
Comment on attachment 209218 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=209218&action=review

r=me

> Source/WebCore/inspector/InspectorOverlay.cpp:213
> +    view->updateLayoutAndStyleIfNeededRecursive();
>      ASSERT(!view->needsLayout());

Seems like you can remove the ASSERT now.
Comment 11 Tim Horton 2013-08-20 13:22:41 PDT
http://trac.webkit.org/changeset/154353