Bug 136762

Summary: Web Inspector: Occasional ASSERT closing web inspector
Product: WebKit Reporter: Joseph Pecoraro <joepeck>
Component: Web InspectorAssignee: Joseph Pecoraro <joepeck>
Status: RESOLVED FIXED    
Severity: Normal CC: buildbot, commit-queue, graouts, joepeck, rniwa, simon.fraser, timothy, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
[PATCH] Proposed Fix
none
Archive of layout-test-results from webkit-ews-14 for mac-mountainlion-wk2
none
[PATCH] Proposed Fix none

Description Joseph Pecoraro 2014-09-11 15:08:49 PDT
We have an occasional assert seen when closing the web inspector:

ASSERTION FAILED: !listeners->isEmpty()
/Users/pecoraro/Code/safari/OpenSource/Source/JavaScriptCore/inspector/ScriptDebugServer.cpp(257)
1   0x116690670 WTFCrash
2   0x1165b59fe Inspector::ScriptDebugServer::sourceParsed(JSC::ExecState*, JSC::SourceProvider*, int, WTF::String const&)
3   0x115f05679 (anonymous namespace)::Recompiler::~Recompiler()
4   0x115f01c85 (anonymous namespace)::Recompiler::~Recompiler()
5   0x115f01a16 JSC::Debugger::recompileAllJSFunctions(JSC::VM*)
6   0x1198a9754 WebCore::PageScriptDebugServer::recompileAllJSFunctions()
7   0x1198a9828 WebCore::PageScriptDebugServer::removeListener(Inspector::ScriptDebugListener*, bool)
8   0x1196a80d5 WebCore::PageDebuggerAgent::stopListeningScriptDebugServer(bool)
9   0x116223a1a Inspector::InspectorDebuggerAgent::disable(bool)
10  0x11a0a6c0f WebCore::WebDebuggerAgent::disable(bool)
11  0x1196a7c6f WebCore::PageDebuggerAgent::disable(bool)
12  0x116223931 Inspector::InspectorDebuggerAgent::willDestroyFrontendAndBackend(Inspector::InspectorDisconnectReason)
13  0x11620e6ae Inspector::InspectorAgentRegistry::willDestroyFrontendAndBackend(Inspector::InspectorDisconnectReason)
14  0x118cb9bef WebCore::InspectorController::disconnectFrontend(Inspector::InspectorDisconnectReason)
15  0x1196a77b2 WebCore::PageDebuggable::disconnect()
16  0x11659c4c1 invocation function for block in Inspector::RemoteInspectorDebuggableConnection::close()
17  0x11659e154 Inspector::RemoteInspectorBlock::operator()() const
18  0x11659ce95 Inspector::RemoteInspectorHandleRunSourceGlobal(void*)
19  0x10d6dd511 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
20  0x10d6d33dd __CFRunLoopDoSources0
21  0x10d6d2a14 __CFRunLoopRun
22  0x10d6d2446 CFRunLoopRunSpecific
23  0x10c92fb42 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
24  0x10c9bbb10 -[NSRunLoop(NSRunLoop) run]
25  0x10e634ac5 _xpc_objc_main
26  0x10e636e88 xpc_main
27  0x10c85eb25 main
28  0x10e380145 start
Comment 1 Radar WebKit Bug Importer 2014-09-11 15:08:59 PDT
<rdar://problem/18312052>
Comment 2 Joseph Pecoraro 2014-09-11 15:12:22 PDT
Looking into this, it is harmless in all cases to just return if the list of listeners is empty.

Also, it now seems to be expected behavior that the list of listeners might be empty when recompiling all JS functions. So the callback from the recompile (sourceParsed) should be ignored in this case with the early return.

I'll clean this up.
Comment 3 Joseph Pecoraro 2014-09-11 15:36:47 PDT
Created attachment 237991 [details]
[PATCH] Proposed Fix
Comment 4 Build Bot 2014-09-11 17:05:47 PDT
Comment on attachment 237991 [details]
[PATCH] Proposed Fix

Attachment 237991 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/4554063857319936

New failing tests:
inspector-protocol/debugger/setBreakpoint-options-exception.html
inspector-protocol/debugger/setBreakpoint-autoContinue.html
inspector-protocol/dom-debugger/node-removed.html
inspector-protocol/debugger/breakpoint-condition-with-exception.html
inspector-protocol/debugger/debugger-statement.html
inspector-protocol/debugger/call-frame-this-host.html
inspector-protocol/debugger/hit-breakpoint-from-console.html
inspector-protocol/debugger/setBreakpoint-column.html
inspector-protocol/debugger/breakpoint-action-with-exception.html
inspector-protocol/debugger/breakpoint-condition-with-bad-script.html
inspector-protocol/debugger/removeBreakpoint.html
inspector-protocol/debugger/didSampleProbe-multiple-probes.html
inspector-protocol/debugger/breakpoint-eval-with-exception.html
inspector-protocol/debugger/searchInContent-linebreaks.html
inspector-protocol/debugger/breakpoint-condition-detach.html
inspector-protocol/debugger/setBreakpoint-actions.html
inspector-protocol/debugger/breakpoint-inside-conditons-and-actions.html
inspector-protocol/debugger/setBreakpoint.html
inspector-protocol/debugger/call-frame-function-name.html
inspector-protocol/debugger/setBreakpointByUrl-sourceURL.html
inspector-protocol/debugger/setBreakpoint-condition.html
Comment 5 Build Bot 2014-09-11 17:05:52 PDT
Created attachment 237999 [details]
Archive of layout-test-results from webkit-ews-14 for mac-mountainlion-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: webkit-ews-14  Port: mac-mountainlion-wk2  Platform: Mac OS X 10.8.5
Comment 6 Joseph Pecoraro 2014-09-11 17:18:46 PDT
Copy and paste error.
Comment 7 Joseph Pecoraro 2014-09-11 17:27:15 PDT
Created attachment 238002 [details]
[PATCH] Proposed Fix
Comment 8 WebKit Commit Bot 2014-09-11 18:50:34 PDT
Comment on attachment 238002 [details]
[PATCH] Proposed Fix

Clearing flags on attachment: 238002

Committed r173551: <http://trac.webkit.org/changeset/173551>
Comment 9 WebKit Commit Bot 2014-09-11 18:50:39 PDT
All reviewed patches have been landed.  Closing bug.