Bug 83195 - Assertion reloading an inspected page if the page uses workers
Summary: Assertion reloading an inspected page if the page uses workers
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Inspector (Deprecated) (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Yury Semikhatsky
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2012-04-04 13:14 PDT by Simon Fraser (smfr)
Modified: 2014-08-03 19:19 PDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Simon Fraser (smfr) 2012-04-04 13:14:13 PDT
If you reload a page with the inspector open, and the page uses workers, then JSC asserts (even in release builds):

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010dea61eb JSC::Weak<JSC::JSCell>::Weak(JSC::JSGlobalData&, JSC::JSCell*, JSC::WeakHandleOwner*, void*) + 59
1   com.apple.JavaScriptCore      	0x000000010dea60f8 JSC::Heap::addFinalizer(JSC::JSCell*, void (*)(JSC::JSCell*)) + 40
2   com.apple.JavaScriptCore      	0x000000010de376ac JSC::evaluate(JSC::ExecState*, JSC::ScopeChainNode*, JSC::SourceCode const&, JSC::JSValue, JSC::JSValue*) + 172
3   com.apple.WebCore             	0x000000010e11c339 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&, WebCore::DOMWrapperWorld*) + 425
4   com.apple.WebCore             	0x000000010e11bf89 WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&) + 41
5   com.apple.WebCore             	0x000000010e5679b2 WebCore::InspectorClient::doDispatchMessageOnFrontendPage(WebCore::Page*, WTF::String const&) + 242
6   com.apple.WebKit2             	0x000000010daf7d9e WebKit::WebInspectorClient::sendMessageToFrontend(WTF::String const&) + 58
7   com.apple.WebCore             	0x000000010e8d5269 WebCore::InspectorFrontend::Inspector::didDestroyWorker(int) + 617
8   com.apple.WebCore             	0x000000010e893533 WebCore::InspectorAgent::didDestroyWorker(long) + 259
9   com.apple.WebCore             	0x000000010e448846 WebCore::AbstractWorker::~AbstractWorker() + 38
10  com.apple.WebCore             	0x000000010e4484ae WebCore::Worker::~Worker() + 94
11  com.apple.WebCore             	0x000000010e448416 WebCore::JSWorkerOwner::finalize(JSC::Handle<JSC::Unknown>, void*) + 166
12  com.apple.JavaScriptCore      	0x000000010dd7e549 JSC::HandleHeap::finalizeWeakHandles() + 169
13  com.apple.JavaScriptCore      	0x000000010dea5f7d JSC::Heap::collect(JSC::Heap::SweepToggle) + 77
14  com.apple.JavaScriptCore      	0x000000010dd7dde8 JSC::DefaultGCActivityCallbackPlatformData::trigger(__CFRunLoopTimer*, void*) + 184
15  com.apple.CoreFoundation      	0x00007fff917a9c24 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
16  com.apple.CoreFoundation      	0x00007fff917a9776 __CFRunLoopDoTimer + 534
17  com.apple.CoreFoundation      	0x00007fff9178a001 __CFRunLoopRun + 1617
18  com.apple.CoreFoundation      	0x00007fff91789676 CFRunLoopRunSpecific + 230
19  com.apple.HIToolbox           	0x00007fff9474831f RunCurrentEventLoopInMode + 277
20  com.apple.HIToolbox           	0x00007fff9474f5c9 ReceiveNextEventCommon + 355
21  com.apple.HIToolbox           	0x00007fff9474f456 BlockUntilNextEventMatchingListInMode + 62
22  com.apple.AppKit              	0x00007fff8b4e1f5d _DPSNextEvent + 659
23  com.apple.AppKit              	0x00007fff8b4e1861 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
24  com.apple.AppKit              	0x00007fff8b4de19d -[NSApplication run] + 470
25  com.apple.WebCore             	0x000000010eb6624f WebCore::RunLoop::run() + 63
26  com.apple.WebKit2             	0x000000010db2eeaa WebKit::WebProcessMain(WebKit::CommandLine const&) + 2538
27  com.apple.WebKit2             	0x000000010dafa8ef WebKitMain + 285
28  com.apple.WebProcess          	0x000000010d9fae5f 0x10d9fa000 + 3679
29  com.apple.WebProcess          	0x000000010d9fad7c 0x10d9fa000 + 3452

The problem is that InspectorAgent::didDestroyWorker(long) is causing script to be run while we're inside a GC. That's a big no-no.
Comment 1 Simon Fraser (smfr) 2012-04-04 13:14:23 PDT
<rdar://problem/11185236>
Comment 2 Brian Burg 2014-08-03 19:19:32 PDT
This code path no longer exists, so closing.