Bug 81574 - ASSERTION FAILED: !m_suspended causing "crashes" on Lion Intel Debug WebKit2 testers
Summary: ASSERTION FAILED: !m_suspended causing "crashes" on Lion Intel Debug WebKit2 ...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Page Loading (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL: http://build.webkit.org/results/Lion%...
Keywords: InRadar, LayoutTestFailure, MakingBotsRed, Regression
Depends on:
Blocks:
 
Reported: 2012-03-19 15:44 PDT by Jessie Berlin
Modified: 2016-08-03 11:02 PDT (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jessie Berlin 2012-03-19 15:44:59 PDT
void SuspendableTimer::suspend(ReasonForSuspension)
{
#if !ASSERT_DISABLED
    ASSERT(!m_suspended);
    m_suspended = true;
#endif
    m_active = isActive();
    if (m_active) {
        m_nextFireInterval = nextFireInterval();
        m_repeatInterval = repeatInterval();
        TimerBase::stop();
    }
}

Unfortunately, I don't know when this started due to the state of our tests. I also cannot reproduce this locally, and it doesn't always show up on the bots (see http://build.webkit.org/results/Lion%20Intel%20Debug%20(WebKit2%20Tests)/r111245%20(5052)/results.html where it didn't happen and http://build.webkit.org/results/Lion%20Intel%20Debug%20(WebKit2%20Tests)/r111254%20(5053)/results.html where it did.

NRWT is not good at correctly associating crash logs with the tests that crashed. However, I have a suspicion that it is happening while running fast/loader/stateobjects/document-destroyed-navigate-back.html, since the backtrace is about a JS alert, and fast/loader/stateobjects/document-destroyed-navigate-back.html	is the only one of the tests that crashed in http://build.webkit.org/results/Lion%20Intel%20Debug%20(WebKit2%20Tests)/r111233%20(5050)/results.html that uses JS alerts.

http://build.webkit.org/results/Lion%20Intel%20Debug%20(WebKit2%20Tests)/r111233%20(5050)/fullscreen/full-screen-twice-crash-log.txt
Comment 1 Radar WebKit Bug Importer 2012-03-19 15:45:19 PDT
<rdar://problem/11077302>
Comment 2 Alexey Proskuryakov 2012-03-19 20:22:49 PDT
See also: bug 35220.
Comment 3 Simon Fraser (smfr) 2012-04-18 10:27:24 PDT
This seems to happen often under JS alert() and confirm() dialogs:

0   com.apple.WebCore             	0x0000000107a231fd WebCore::SuspendableTimer::resume() + 93 (SuspendableTimer.cpp:76)
1   com.apple.WebCore             	0x0000000107a2325c non-virtual thunk to WebCore::SuspendableTimer::resume() + 28
2   com.apple.WebCore             	0x000000010791e449 WebCore::ScriptExecutionContext::resumeActiveDOMObjects() + 361 (ScriptExecutionContext.cpp:211)
3   com.apple.WebCore             	0x00000001067faaec WebCore::Document::resumeActiveDOMObjects() + 28 (Document.cpp:2048)
4   com.apple.WebCore             	0x0000000106806810 WebCore::Document::resumeScheduledTasks() + 176 (Document.cpp:5092)
5   com.apple.WebCore             	0x00000001075b8513 WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer() + 163 (PageGroupLoadDeferrer.cpp:70)
6   com.apple.WebCore             	0x00000001075b8465 WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer() + 21 (PageGroupLoadDeferrer.cpp:73)
7   com.apple.WebCore             	0x000000010654aa4d WebCore::Chrome::runJavaScriptAlert(WebCore::Frame*, WTF::String const&) + 349 (Chrome.cpp:311)
8   com.apple.WebCore             	0x000000010699197d WebCore::DOMWindow::alert(WTF::String const&) + 141 (DOMWindow.cpp:967)
9   com.apple.WebCore             	0x0000000106fd2a89 WebCore::jsDOMWindowPrototypeFunctionAlert(JSC::ExecState*) + 873 (JSDOMWindow.cpp:11401)
10  ???                           	0x00003756dc401258 0 + 60846201901656
11  com.apple.JavaScriptCore      	0x0000000105992099 JSC::JITCode::execute(JSC::RegisterFile*, JSC::ExecState*, JSC::JSGlobalData*) + 121 (JITCode.h:127)
12  com.apple.JavaScriptCore      	0x000000010598eb58 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 1752 (Interpreter.cpp:1270)
13  com.apple.JavaScriptCore      	0x00000001058584db JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 315 (CallData.cpp:39)
14  com.apple.WebCore             	0x0000000106ec6ca3 WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 179 (JSMainThreadExecState.h:56)
15  com.apple.WebCore             	0x0000000106ec691e WebCore::JSCallbackData::invokeCallback(JSC::JSValue, JSC::MarkedArgumentBuffer&, bool*) + 878 (JSCallbackData.cpp:78)
16  com.apple.WebCore             	0x0000000106ec6599 WebCore::JSCallbackData::invokeCallback(JSC::MarkedArgumentBuffer&, bool*) + 169 (JSCallbackData.cpp:48)
17  com.apple.WebCore             	0x0000000106f3e2d7 WebCore::JSCustomVoidCallback::handleEvent() + 247 (JSCustomVoidCallback.cpp:68)
18  com.apple.WebCore             	0x00000001079d341e WebCore::SQLTransaction::deliverSuccessCallback() + 126 (SQLTransaction.cpp:539)
19  com.apple.WebCore             	0x00000001079d3ce0 WebCore::SQLTransaction::performPendingCallback() + 608 (SQLTransaction.cpp:215)
20  com.apple.WebCore             	0x000000010678cf3b WebCore::DeliverPendingCallbackTask::performTask(WebCore::ScriptExecutionContext*) + 43 (Database.cpp:347)
21  com.apple.WebCore             	0x00000001067f09c8 WebCore::Document::pendingTasksTimerFired(WebCore::Timer<WebCore::Document>*) + 200 (Document.cpp:5071)
22  com.apple.WebCore             	0x0000000106837353 WebCore::Timer<WebCore::Document>::fired() + 115 (Timer.h:100)
23  com.apple.WebCore             	0x0000000107bd40b7 WebCore::ThreadTimers::sharedTimerFiredInternal() + 311 (ThreadTimers.cpp:118)



0   com.apple.WebCore             	0x000000010bded1fd WebCore::SuspendableTimer::resume() + 93 (SuspendableTimer.cpp:76)
1   com.apple.WebCore             	0x000000010bded25c non-virtual thunk to WebCore::SuspendableTimer::resume() + 28
2   com.apple.WebCore             	0x000000010bce8449 WebCore::ScriptExecutionContext::resumeActiveDOMObjects() + 361 (ScriptExecutionContext.cpp:211)
3   com.apple.WebCore             	0x000000010abc4aec WebCore::Document::resumeActiveDOMObjects() + 28 (Document.cpp:2048)
4   com.apple.WebCore             	0x000000010abd0810 WebCore::Document::resumeScheduledTasks() + 176 (Document.cpp:5092)
5   com.apple.WebCore             	0x000000010b982513 WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer() + 163 (PageGroupLoadDeferrer.cpp:70)
6   com.apple.WebCore             	0x000000010b982465 WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer() + 21 (PageGroupLoadDeferrer.cpp:73)
7   com.apple.WebCore             	0x000000010a914bdc WebCore::Chrome::runJavaScriptConfirm(WebCore::Frame*, WTF::String const&) + 380 (Chrome.cpp:324)
8   com.apple.WebCore             	0x000000010ad5ba25 WebCore::DOMWindow::confirm(WTF::String const&) + 149 (DOMWindow.cpp:980)
9   com.apple.WebCore             	0x000000010b39ce39 WebCore::jsDOMWindowPrototypeFunctionConfirm(JSC::ExecState*) + 873 (JSDOMWindow.cpp:11417)
10  ???                           	0x0000000110357258 0 + 4566905432
11  com.apple.JavaScriptCore      	0x0000000109d5c099 JSC::JITCode::execute(JSC::RegisterFile*, JSC::ExecState*, JSC::JSGlobalData*) + 121 (JITCode.h:127)
12  com.apple.JavaScriptCore      	0x0000000109d58b58 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 1752 (Interpreter.cpp:1270)
13  com.apple.JavaScriptCore      	0x0000000109c224db JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 315 (CallData.cpp:39)
14  com.apple.WebCore             	0x000000010b290ca3 WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 179 (JSMainThreadExecState.h:56)
15  com.apple.WebCore             	0x000000010b3dd664 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) + 1412 (JSEventListener.cpp:132)
16  com.apple.WebCore             	0x000000010ae02d79 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul>&) + 393 (EventTarget.cpp:232)
17  com.apple.WebCore             	0x000000010ae02bbb WebCore::EventTarget::fireEventListeners(WebCore::Event*) + 331 (EventTarget.cpp:200)
18  com.apple.WebCore             	0x000000010ad56f07 WebCore::DOMWindow::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, WTF::PassRefPtr<WebCore::EventTarget>) + 359 (DOMWindow.cpp:1596)
19  com.apple.WebCore             	0x000000010ad5e11b WebCore::DOMWindow::dispatchLoadEvent() + 395 (DOMWindow.cpp:1570)
20  com.apple.WebCore             	0x000000010abc54b2 WebCore::Document::dispatchWindowLoadEvent() + 146 (Document.cpp:3862)
21  com.apple.WebCore             	0x000000010abc28f4 WebCore::Document::implicitClose() + 516 (Document.cpp:2356)
22  com.apple.WebCore             	0x000000010ae9519b WebCore::FrameLoader::checkCallImplicitClose() + 155 (FrameLoader.cpp:779)
23  com.apple.WebCore             	0x000000010ae94e55 WebCore::FrameLoader::checkCompleted() + 341 (FrameLoader.cpp:726)
24  com.apple.WebCore             	0x000000010ae93c13 WebCore::FrameLoader::finishedParsing() + 179 (FrameLoader.cpp:659)
25  com.apple.WebCore             	0x000000010abceaff WebCore::Document::finishedParsing() + 591 (Document.cpp:4606)
26  com.apple.WebCore             	0x000000010b08aad4 WebCore::HTMLTreeBuilder::finished() + 148 (HTMLTreeBuilder.cpp:2819)
27  com.apple.WebCore             	0x000000010afb3c43 WebCore::HTMLDocumentParser::end() + 227 (HTMLDocumentParser.cpp:382)
28  com.apple.WebCore             	0x000000010afb2b66 WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd() + 278 (HTMLDocumentParser.cpp:391)
29  com.apple.WebCore             	0x000000010afb293c WebCore::HTMLDocumentParser::prepareToStopParsing() + 268 (HTMLDocumentParser.cpp:154)
30  com.apple.WebCore             	0x000000010afb3c93 WebCore::HTMLDocumentParser::attemptToEnd() + 67 (HTMLDocumentParser.cpp:403)
31  com.apple.WebCore             	0x000000010afb3ce8 WebCore::HTMLDocumentParser::finish() + 72 (HTMLDocumentParser.cpp:430)
32  com.apple.WebCore             	0x000000010ac2d247 WebCore::DocumentWriter::end() + 391 (DocumentWriter.cpp:242)
33  com.apple.WebCore             	0x000000010ac0b7ec WebCore::DocumentLoader::finishedLoading() + 172 (DocumentLoader.cpp:294)
34  com.apple.WebCore             	0x000000010b884cbe WebCore::MainResourceLoader::didFinishLoading(double) + 318 (MainResourceLoader.cpp:481)
35  com.apple.WebCore             	0x000000010bc8b295 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*, double) + 53 (ResourceLoader.cpp:433)
36  com.apple.WebCore             	0x000000010bc87e15 -[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:] + 197 (ResourceHandleMac.mm:861)
37  com.apple.Foundation          	0x00007fff8c997662 ___NSURLConnectionDidFinishLoading_block_invoke_1 + 122
38  com.apple.Foundation          	0x00007fff8c9975e2 _NSURLConnectionDidFinishLoading + 81
39  com.apple.CFNetwork           	0x00007fff873cb4fe URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 296
40  com.apple.CFNetwork           	0x00007fff8747b91e URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 862
41  com.apple.CFNetwork           	0x00007fff873a6389 URLConnectionClient::processEvents() + 185
Comment 4 Simon Fraser (smfr) 2012-04-18 10:32:19 PDT
Tests where this crash has been seen:
svg/W3C-SVG-1.1-SE/color-prop-05-t.svg
Comment 5 Alexey Proskuryakov 2012-04-18 10:36:35 PDT
Failing during test runs is particularly mysterious - modal dialogs are no-ops, so all this does it suspend and immediately resume everything.
Comment 6 Yong Li 2012-04-18 11:45:43 PDT
Welcome to this tricky area! This means JS had been executed when the modal dialog was open. It could be some event listener. We probably need a universal solution to prevent JS reentrancy, but have to keep JS debugger working.
Comment 7 Brady Eidson 2012-04-18 11:57:02 PDT
(In reply to comment #6)
> Welcome to this tricky area! This means JS had been executed when the modal dialog was open. It could be some event listener. We probably need a universal solution to prevent JS reentrancy, but have to keep JS debugger working.

Except this is in DRT and as Alexey stated:

>Failing during test runs is particularly mysterious - modal dialogs are no-ops, so all this does it suspend and immediately resume everything.

Unless something has drastically changed about DRT that both Alexey and I are unaware of where DRT executes JS during modal dialog calls?
Comment 8 Yong Li 2012-04-18 12:13:32 PDT
(In reply to comment #7)
> (In reply to comment #6)
> > Welcome to this tricky area! This means JS had been executed when the modal dialog was open. It could be some event listener. We probably need a universal solution to prevent JS reentrancy, but have to keep JS debugger working.
> 
> Except this is in DRT and as Alexey stated:
> 
> >Failing during test runs is particularly mysterious - modal dialogs are no-ops, so all this does it suspend and immediately resume everything.
> 
> Unless something has drastically changed about DRT that both Alexey and I are unaware of where DRT executes JS during modal dialog calls?

I am unaware, too. This is what needs to be dig out.
Comment 9 Jessie Berlin 2012-08-30 16:38:49 PDT
This is one of the number 1 "crashers" on the ML Debug WK2 bots, especially when running the inspector tests:

http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/console/console-assert-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/function-details-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/debugger-suspend-active-dom-objects-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/debugger-reload-on-pause-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/debugger-step-in-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/debugger-activation-crash-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/debugger-eval-on-call-frame-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/script-extract-outline-crash-log.txt
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r127193%20(457)/inspector/debugger/debugger-pause-on-exception-crash-log.txt
Comment 10 Alexey Proskuryakov 2013-03-20 10:01:16 PDT
See also: bug 97124.
Comment 11 BJ Burg 2016-08-03 11:02:18 PDT
Has this reproduced recently on Yosemite+ ?