[webkit-reviews] review requested: [Bug 210794] WebKit.WebContent process crashes when web developer tools are opened in Safari : [Attachment 397995] [Patch] WIP

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Apr 29 13:39:08 PDT 2020


Devin Rousso <drousso at apple.com> has asked  for review:
Bug 210794: WebKit.WebContent process crashes when web developer tools are
opened in Safari
https://bugs.webkit.org/show_bug.cgi?id=210794

Attachment 397995: [Patch] WIP

https://bugs.webkit.org/attachment.cgi?id=397995&action=review




--- Comment #7 from Devin Rousso <drousso at apple.com> ---
Created attachment 397995

  --> https://bugs.webkit.org/attachment.cgi?id=397995&action=review

[Patch] WIP

Speculative fix that seems to work.

Before this change, this was the order of events by adding
`WTFReportBacktrace();` inside
 - the lambda given to the `ScriptExecutionContext::Task` created in
`WorkerMessagingProxy::postMessageToWorkerGlobalScope`
 - in `WorkerScriptController::scheduleExecutionTermination` right before
`m_isTerminatingExecution = true;`
 - in `WorkerScriptController::isTerminatingExecution` right before `return
m_isTerminatingExecution;`

>>> m_isTerminatingExecution == false
1   0x1975840f5 WebCore::WorkerScriptController::isTerminatingExecution() const
2   0x1996ba5ad
WebCore::WorkerRunLoop::Task::performTask(WebCore::WorkerGlobalScope*)
3   0x1996b9ad7 WebCore::WorkerRunLoop::runInMode(WebCore::WorkerGlobalScope*,
WebCore::ModePredicate const&, WebCore::WorkerRunLoop::WaitMode)
4   0x1996b96d8 WebCore::WorkerRunLoop::run(WebCore::WorkerGlobalScope*)
5   0x1996bd518 WebCore::WorkerThread::runEventLoop()
6   0x19969e634 WebCore::DedicatedWorkerThread::runEventLoop()
7   0x1996bcfe1 WebCore::WorkerThread::workerThread()
8   0x1996d0118 WebCore::WorkerThread::start(WTF::Function<void (WTF::String
const&)>&&)::$_16::operator()() const
9   0x1996d00ce
WTF::Detail::CallableWrapper<WebCore::WorkerThread::start(WTF::Function<void
(WTF::String const&)>&&)::$_16, void>::call()
10  0x1b06e5792 WTF::Function<void ()>::operator()() const
11  0x1b078be58 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
12  0x1b0797588 WTF::wtfThreadEntryPoint(void*)
13  0x7fff6bc80109 _pthread_start
14  0x7fff6bc7bb8b thread_start
>>> m_askedToTerminate == true



>>> m_isTerminatingExecution = true
1   0x1975842fe WebCore::WorkerScriptController::scheduleExecutionTermination()
2   0x1996b8ce2 WebCore::WorkerThread::stop(WTF::Function<void ()>&&)
3   0x1996b91b0 WebCore::WorkerMessagingProxy::terminateWorkerGlobalScope()
4   0x19969f7f4 WebCore::Worker::terminate()
5   0x1968ede4e
WebCore::jsWorkerPrototypeFunctionTerminateBody(JSC::JSGlobalObject*,
JSC::CallFrame*, WebCore::JSWorker*, JSC::ThrowScope&)
6   0x196868932 long long
WebCore::IDLOperation<WebCore::JSWorker>::call<&(WebCore::jsWorkerPrototypeFunc
tionTerminateBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSWorker*,
JSC::ThrowScope&)), (WebCore::CastedThisErrorBehavior)0>(JSC::JSGlobalObject&,
JSC::CallFrame&, char const*)
7   0x196868614
WebCore::jsWorkerPrototypeFunctionTerminate(JSC::JSGlobalObject*,
JSC::CallFrame*)
8   0x5a8095e011d8
9   0x1b0bdee3f llint_entry
10  0x1b0bbf763 vmEntryToJavaScript
11  0x1b197d277 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
12  0x1b197d9f1 JSC::Interpreter::executeCall(JSC::JSGlobalObject*,
JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
13  0x1b1cd51ad JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData
const&, JSC::JSValue, JSC::ArgList const&)
14  0x1b1cd528f JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData
const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&)
15  0x1b1cd5572 JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason,
JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&,
WTF::NakedPtr<JSC::Exception>&)
16  0x1974c77de WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*,
JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue,
JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&)
17  0x1974e43bc
WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&,
WebCore::Event&)
18  0x197b33a57
WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&,
WTF::Vector<WTF::RefPtr<WebCore::RegisteredEventListener,
WTF::DumbPtrTraits<WebCore::RegisteredEventListener> >, 1ul,
WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>,
WebCore::EventTarget::EventInvokePhase)
19  0x197b2fd60 WebCore::EventTarget::fireEventListeners(WebCore::Event&,
WebCore::EventTarget::EventInvokePhase)
20  0x197ba6002 WebCore::Node::handleLocalEvents(WebCore::Event&,
WebCore::EventTarget::EventInvokePhase)
21  0x197b1e4a1 WebCore::EventContext::handleLocalEvents(WebCore::Event&,
WebCore::EventTarget::EventInvokePhase) const
22  0x197b1e6db
WebCore::MouseOrFocusEventContext::handleLocalEvents(WebCore::Event&,
WebCore::EventTarget::EventInvokePhase) const
23  0x197b1ef6f WebCore::dispatchEventInDOM(WebCore::Event&, WebCore::EventPath
const&)
24  0x197b1eaa7 WebCore::EventDispatcher::dispatchEvent(WebCore::Node&,
WebCore::Event&)
25  0x197ba605d WebCore::Node::dispatchEvent(WebCore::Event&)
26  0x197ad573e
WebCore::Element::dispatchMouseEvent(WebCore::PlatformMouseEvent const&,
WTF::AtomString const&, int, WebCore::Element*)
27  0x19869aa1d WebCore::EventHandler::dispatchMouseEvent(WTF::AtomString
const&, WebCore::Node*, bool, int, WebCore::PlatformMouseEvent const&, bool)
28  0x19869d8e4
WebCore::EventHandler::handleMouseReleaseEvent(WebCore::PlatformMouseEvent
const&)
29  0x199284923
WebCore::UserInputBridge::handleMouseReleaseEvent(WebCore::PlatformMouseEvent
const&, WebCore::InputSource)
30  0x1898b6847 WebKit::handleMouseEvent(WebKit::WebMouseEvent const&,
WebKit::WebPage*)
31  0x1898b6609 WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&)



>>> m_isTerminatingExecution == true
1   0x1975840f5 WebCore::WorkerScriptController::isTerminatingExecution() const
2   0x1974e447e
WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&,
WebCore::Event&)
3   0x197b33a57
WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&,
WTF::Vector<WTF::RefPtr<WebCore::RegisteredEventListener,
WTF::DumbPtrTraits<WebCore::RegisteredEventListener> >, 1ul,
WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>,
WebCore::EventTarget::EventInvokePhase)
4   0x197b2fd60 WebCore::EventTarget::fireEventListeners(WebCore::Event&,
WebCore::EventTarget::EventInvokePhase)
5   0x197b3354d WebCore::EventTarget::dispatchEvent(WebCore::Event&)
6   0x1996c5b2f
WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope(WebCore::MessageW
ithMessagePorts&&)::$_5::operator()(WebCore::ScriptExecutionContext&)
7   0x1996c58f3
WTF::Detail::CallableWrapper<WebCore::WorkerMessagingProxy::postMessageToWorker
GlobalScope(WebCore::MessageWithMessagePorts&&)::$_5, void,
WebCore::ScriptExecutionContext&>::call(WebCore::ScriptExecutionContext&)
8   0x19735f44a WTF::Function<void
(WebCore::ScriptExecutionContext&)>::operator()(WebCore::ScriptExecutionContext
&) const
9   0x19734abdd
WebCore::ScriptExecutionContext::Task::performTask(WebCore::ScriptExecutionCont
ext&)
10  0x1996ba5e0
WebCore::WorkerRunLoop::Task::performTask(WebCore::WorkerGlobalScope*)
11  0x1996b9ad7 WebCore::WorkerRunLoop::runInMode(WebCore::WorkerGlobalScope*,
WebCore::ModePredicate const&, WebCore::WorkerRunLoop::WaitMode)
12  0x1996b96d8 WebCore::WorkerRunLoop::run(WebCore::WorkerGlobalScope*)
13  0x1996bd518 WebCore::WorkerThread::runEventLoop()
14  0x19969e634 WebCore::DedicatedWorkerThread::runEventLoop()
15  0x1996bcfe1 WebCore::WorkerThread::workerThread()
16  0x1996d0118 WebCore::WorkerThread::start(WTF::Function<void (WTF::String
const&)>&&)::$_16::operator()() const
17  0x1996d00ce
WTF::Detail::CallableWrapper<WebCore::WorkerThread::start(WTF::Function<void
(WTF::String const&)>&&)::$_16, void>::call()
18  0x1b06e5792 WTF::Function<void ()>::operator()() const
19  0x1b078be58 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
20  0x1b0797588 WTF::wtfThreadEntryPoint(void*)
21  0x7fff6bc80109 _pthread_start
22  0x7fff6bc7bb8b thread_start



SHOULD NEVER BE REACHED
./bindings/ScriptValue.cpp(45) : RefPtr<JSON::Value>
Inspector::jsToInspectorValue(JSC::JSGlobalObject *, JSC::JSValue, int)
1   0x1b06be9e9 WTFCrash
2   0x1b0e031bb WTFCrashWithInfo(int, char const*, char const*, int)
3   0x1b100b193 Inspector::jsToInspectorValue(JSC::JSGlobalObject*,
JSC::JSValue, int)
4   0x1b100b0f9 Inspector::toInspectorValue(JSC::JSGlobalObject*, JSC::JSValue)
5   0x1b184c920
Inspector::InjectedScriptBase::makeCall(Deprecated::ScriptFunctionCall&)
6   0x1b184ee10 Inspector::InjectedScript::clearEventValue()
7   0x1b185160a Inspector::InjectedScriptManager::clearEventValue()
8   0x1982df1f9 WebCore::InspectorDOMDebuggerAgent::didHandleEvent()
9   0x198218e41
WebCore::InspectorInstrumentation::didHandleEventImpl(WebCore::InstrumentingAge
nts&)
10  0x197b33f9a
WebCore::InspectorInstrumentation::didHandleEvent(WebCore::ScriptExecutionConte
xt&)
11  0x197b33a60
WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&,
WTF::Vector<WTF::RefPtr<WebCore::RegisteredEventListener,
WTF::DumbPtrTraits<WebCore::RegisteredEventListener> >, 1ul,
WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>,
WebCore::EventTarget::EventInvokePhase)
12  0x197b2fd60 WebCore::EventTarget::fireEventListeners(WebCore::Event&,
WebCore::EventTarget::EventInvokePhase)
13  0x197b3354d WebCore::EventTarget::dispatchEvent(WebCore::Event&)
14  0x1996c5b2f
WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope(WebCore::MessageW
ithMessagePorts&&)::$_5::operator()(WebCore::ScriptExecutionContext&)
15  0x1996c58f3
WTF::Detail::CallableWrapper<WebCore::WorkerMessagingProxy::postMessageToWorker
GlobalScope(WebCore::MessageWithMessagePorts&&)::$_5, void,
WebCore::ScriptExecutionContext&>::call(WebCore::ScriptExecutionContext&)
16  0x19735f44a WTF::Function<void
(WebCore::ScriptExecutionContext&)>::operator()(WebCore::ScriptExecutionContext
&) const
17  0x19734abdd
WebCore::ScriptExecutionContext::Task::performTask(WebCore::ScriptExecutionCont
ext&)
18  0x1996ba5e0
WebCore::WorkerRunLoop::Task::performTask(WebCore::WorkerGlobalScope*)
19  0x1996b9ad7 WebCore::WorkerRunLoop::runInMode(WebCore::WorkerGlobalScope*,
WebCore::ModePredicate const&, WebCore::WorkerRunLoop::WaitMode)
20  0x1996b96d8 WebCore::WorkerRunLoop::run(WebCore::WorkerGlobalScope*)
21  0x1996bd518 WebCore::WorkerThread::runEventLoop()
22  0x19969e634 WebCore::DedicatedWorkerThread::runEventLoop()
23  0x1996bcfe1 WebCore::WorkerThread::workerThread()
24  0x1996d0118 WebCore::WorkerThread::start(WTF::Function<void (WTF::String
const&)>&&)::$_16::operator()() const
25  0x1996d00ce
WTF::Detail::CallableWrapper<WebCore::WorkerThread::start(WTF::Function<void
(WTF::String const&)>&&)::$_16, void>::call()
26  0x1b06e5792 WTF::Function<void ()>::operator()() const
27  0x1b078be58 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
28  0x1b0797588 WTF::wtfThreadEntryPoint(void*)
29  0x7fff6bc80109 _pthread_start
30  0x7fff6bc7bb8b thread_start


More information about the webkit-reviews mailing list