http/tests/misc/script-async.html failed once on Windows. See the URL for the diff.
<rdar://problem/9121059>
I thought the http tests were notoriously flaky on Windows due to http server issues. Are they really stable? I'll patch this test to improve the failure message so we can tell what is going on if it happens again.
(In reply to comment #2) > I thought the http tests were notoriously flaky on Windows due to http server issues. Are they really stable? > > I'll patch this test to improve the failure message so we can tell what is going on if it happens again. Scratch that comment entirely. The actual result is in the failure message. We executed the slow async script twice which is a serious bug and not caused by the http server. We need to investigate how this could happen.
Looking back on the chromium bots, we can see this has failed twice on the Win debug bots in recent times (at r80408 and r80410). http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=http%2Ftests%2Fmisc%2Fscript-async.html&group=%40ToT%20-%20chromium.org ASSERTION FAILED: m_loadEventDelayCount Backtrace: WebCore::Document::decrementLoadEventDelayCount [0x012E5DE6+54] (e:\b\build\slave\webkit_win__dbg__2_\build\src\third_party\webkit\source\webcore\dom\document.cpp:4962) WebCore::AsyncScriptRunner::timerFired [0x01568D52+242] (e:\b\build\slave\webkit_win__dbg__2_\build\src\third_party\webkit\source\webcore\dom\asyncscriptrunner.cpp:89) WebCore::Timer<WebCore::AsyncScriptRunner>::fired [0x01568F93+35] (e:\b\build\slave\webkit_win__dbg__2_\build\src\third_party\webkit\source\webcore\platform\timer.h:100) WebCore::ResourceHandle::prepareForURL [0x017DB669+1129] WebCore::ResourceHandle::prepareForURL [0x017DB586+902] webkit_glue::WebKitClientImpl::DoTimeout [0x00AE683B+43] (e:\b\build\slave\webkit_win__dbg__2_\build\src\webkit\glue\webkitclient_impl.h:86) DispatchToMethod<webkit_glue::WebKitClientImpl,void (__thiscall webkit_glue::WebKitClientImpl::*)(void)> [0x00AE7A9C+12] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\tuple.h:541) base::BaseTimer<webkit_glue::WebKitClientImpl,0>::TimerTask::Run [0x00AE73E4+84] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\timer.h:160) MessageLoop::RunTask [0x01CC6820+272] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_loop.cc:367) MessageLoop::DeferOrRunPendingTask [0x01CC6955+53] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_loop.cc:379) MessageLoop::DoWork [0x01CC746C+236] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_loop.cc:569) base::MessagePumpForUI::DoRunLoop [0x01D0E6E4+84] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_pump_win.cc:201) base::MessagePumpWin::RunWithDispatcher [0x01D0DF52+130] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_pump_win.cc:49) base::MessagePumpWin::Run [0x01D0E1BC+28] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_pump_win.h:79) MessageLoop::RunInternal [0x01CC6667+247] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_loop.cc:342) MessageLoop::RunHandler [0x01CC643E+46] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_loop.cc:316) MessageLoop::Run [0x01CC5D4A+58] (e:\b\build\slave\webkit_win__dbg__2_\build\src\base\message_loop.cc:240) webkit_support::RunMessageLoop [0x008AB70F+15] (e:\b\build\slave\webkit_win__dbg__2_\build\src\webkit\support\webkit_support.cc:360) TestShell::waitTestFinished [0x00428F2D+141] (e:\b\build\slave\webkit_win__dbg__2_\build\src\third_party\webkit\tools\dumprendertree\chromium\testshellwin.cpp:106) TestShell::runFileTest [0x0044243F+447] (e:\b\build\slave\webkit_win__dbg__2_\build\src\third_party\webkit\tools\dumprendertree\chromium\testshell.cpp:196) runTest [0x00419B5D+733] (e:\b\build\slave\webkit_win__dbg__2_\build\src\third_party\webkit\tools\dumprendertree\chromium\dumprendertree.cpp:119) main [0x00419425+1717] (e:\b\build\slave\webkit_win__dbg__2_\build\src\third_party\webkit\tools\dumprendertree\chromium\dumprendertree.cpp:214) __tmainCRTStartup [0x00A30CE7+279] (f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c:266) mainCRTStartup [0x00A30BBF+15] (f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c:182) RegisterWaitForInputIdle [0x7C817077+73]
ScriptElement::notifyFinished() calls AsyncScriptRunner::executeScriptSoon() and immediately clears its CachedScript to prevent further notifyFinished() notifications. AsyncScriptRunner starts a timer which, upon execution, clears the member with the list of scripts to execute soon and then executes them. So under normal operation, I don't see how we could get double execution. 1,500 runs of the test on mac doesn't repro the problem. I'll warm up a win build and try to repro there, but if that doesn't work, I'm not sure where to go from here.
A different handful of tests seem to fail on the win 7 bot nearly every run. I'm growing more skeptical this is actually an issue in the script running code.
(In reply to comment #6) > A different handful of tests seem to fail on the win 7 bot nearly every run. I'm growing more skeptical this is actually an issue in the script running code. Before this failure there were 8 green builds in a row: http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10282 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10283 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10284 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10285 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10286 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10287 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10288 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10289 Then this test failed: http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10290 Then the next two builds were green: http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10291 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/10292 And then a real regression was introduced into the tree (someone forgot to update Windows results) and the bots went red again.
http://code.google.com/p/chromium/issues/detail?id=75604 over on Chrome appears to be the same issue. I think we're looking at the timer firing twice.