WTR::InjectedBundlePage::willSendRequestForFrame() leaks a WKDataRef. Example leak: STACK OF 1 INSTANCE OF 'ROOT LEAK: <WKNSData>': [thread 0x1065c05c0]: 63 libdyld.dylib 0x5b34b3575 start + 1 62 com.apple.WebKit.WebContent 0x10585d3e5 invocation function for block in WebKit::XPCServiceEventHandler(NSObject<OS_xpc_object>*) + 0 XPCServiceMain.mm:46 61 com.apple.WebKit.WebContent 0x10585d268 WebKit::XPCServiceMain(int, char const**) + 403 XPCServiceMain.mm:157 60 libxpc.dylib 0x5b377ec75 xpc_main + 143 59 libxpc.dylib 0x5b377c7ca _xpc_objc_main + 460 58 com.apple.Foundation 0x10591a522 -[NSRunLoop(NSRunLoop) run] + 76 57 com.apple.Foundation 0x10591a3b2 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 277 56 com.apple.CoreFoundation 0x5b1b43e51 CFRunLoopRunSpecific + 625 55 com.apple.CoreFoundation 0x5b1b4467f __CFRunLoopRun + 1263 54 com.apple.CoreFoundation 0x5b1b49fd3 __CFRunLoopDoSources0 + 243 53 com.apple.CoreFoundation 0x5b1b4a761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 52 JavaScriptCore 0x5b630f2a2 WTF::RunLoop::performWork(void*) + 34 RunLoopCF.cpp:39 51 JavaScriptCore 0x5b630f017 WTF::RunLoop::performWork() + 231 Function.h:56 50 com.apple.WebKit 0x5b00ab894 IPC::Connection::dispatchOneIncomingMessage() + 180 Connection.cpp:1074 49 com.apple.WebKit 0x5b00a8262 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >) + 108 memory:2567 48 com.apple.WebKit 0x5b03c145f WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&, IPC::Decoder&) + 625 NetworkProcessConnection.cpp:0 47 com.apple.WebKit 0x5b04a25aa WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&, IPC::Decoder&) + 754 HandleMessage.h:0 46 com.apple.WebKit 0x5b03c74c5 WebKit::WebResourceLoader::didFinishResourceLoad(WebCore::NetworkLoadMetrics const&) + 211 WebResourceLoader.cpp:164 45 com.apple.WebCore 0x5b888c5b8 WebCore::SubresourceLoader::didFinishLoading(WebCore::NetworkLoadMetrics const&) + 760 ResourceLoader.h:161 44 com.apple.WebCore 0x5b88bce75 WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*) + 661 CachedRawResource.cpp:107 43 com.apple.WebCore 0x5b88c130c WebCore::CachedResource::checkNotify() + 348 CachedResource.cpp:355 42 com.apple.WebCore 0x5b8841745 WebCore::DocumentThreadableLoader::didFinishLoading(unsigned long) + 405 DocumentThreadableLoader.cpp:465 41 com.apple.WebCore 0x5b8fb0db8 WebCore::XMLHttpRequest::didFinishLoading(unsigned long) + 184 type_traits:4592 40 com.apple.WebCore 0x5b8fad7b4 WebCore::XMLHttpRequest::changeState(WebCore::XMLHttpRequest::State) + 164 XMLHttpRequest.cpp:313 39 com.apple.WebCore 0x5b8fad8c5 WebCore::XMLHttpRequest::callReadyStateChangeListener() + 149 Ref.h:59 38 com.apple.WebCore 0x5b8489498 WebCore::EventTarget::dispatchEvent(WebCore::Event&) + 136 EventTarget.cpp:199 37 com.apple.WebCore 0x5b84870c2 WebCore::EventTarget::fireEventListeners(WebCore::Event&, WebCore::EventTarget::EventInvokePhase) + 690 Vector.h:674 36 com.apple.WebCore 0x5b8489828 WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&, WTF::Vector<WTF::RefPtr<WebCore::RegisteredEventListener, WTF::DumbPtrTraits<WebCore::RegisteredEventListener> >, 1ul, WTF::CrashOnOverflow, 16ul>, WebCore::EventTarget::EventInvokePhase) + 872 InspectorInstrumentation.h:284 35 com.apple.WebCore 0x5b81d2098 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&, WebCore::Event&) + 1096 JSEventListener.cpp:175 34 com.apple.WebCore 0x5b81ba0a4 WebCore::JSExecState::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&) + 100 JSExecState.h:74 33 JavaScriptCore 0x5b6abb04b JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&) + 187 CallData.cpp:59 32 JavaScriptCore 0x5b6874a95 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 469 JITCodeInlines.h:39 31 JavaScriptCore 0x5b6494a09 vmEntryToJavaScript + 200 LowLevelInterpreter64.asm:294 30 JavaScriptCore 0x5b64a3cf1 llint_entry + 61758 LowLevelInterpreter.asm:886 29 0x3ada8ee01177 0x3ada8ee01000 + 375 28 com.apple.WebCore 0x5b7f3779d WebCore::jsXMLHttpRequestPrototypeFunctionSend(JSC::ExecState*) + 269 Expected.h:550 27 com.apple.WebCore 0x5b8fae1a5 WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&) + 133 Expected.h:297 26 com.apple.WebCore 0x5b8fb2ecb WebCore::ExceptionOr<void> WTF::__visitor_table<WTF::Visitor<WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_0, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_1, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_2, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_3, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_4, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_5>, WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String>::__trampoline_func<WTF::String>(WTF::Visitor<WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_0, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_1, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_2, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_3, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_4, WebCore::XMLHttpRequest::send(WTF::Optional<WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String> >&&)::$_5>&, WTF::Variant<WTF::RefPtr<WebCore::Document, WTF::DumbPtrTraits<WebCore::Document> >, WTF::RefPtr<WebCore::Blob, WTF::DumbPtrTraits<WebCore::Blob> >, WTF::RefPtr<JSC::ArrayBufferView, WTF::DumbPtrTraits<JSC::ArrayBufferView> >, WTF::RefPtr<JSC::ArrayBuffer, WTF::DumbPtrTraits<JSC::ArrayBuffer> >, WTF::RefPtr<WebCore::DOMFormData, WTF::DumbPtrTraits<WebCore::DOMFormData> >, WTF::String>&) + 27 Variant.h:1868 25 com.apple.WebCore 0x5b8fae6eb WebCore::XMLHttpRequest::send(WTF::String const&) + 875 XMLHttpRequest.cpp:518 24 com.apple.WebCore 0x5b8faf21d WebCore::XMLHttpRequest::createRequest() + 1709 utility:896 23 com.apple.WebCore 0x5b8893167 WebCore::ThreadableLoader::create(WebCore::ScriptExecutionContext&, WebCore::ThreadableLoaderClient&, WebCore::ResourceRequest&&, WebCore::ThreadableLoaderOptions const&, WTF::String&&) + 167 utility:896 22 com.apple.WebCore 0x5b883dd4c WebCore::DocumentThreadableLoader::create(WebCore::Document&, WebCore::ThreadableLoaderClient&, WebCore::ResourceRequest&&, WebCore::ThreadableLoaderOptions const&, WTF::String&&) + 108 DocumentThreadableLoader.cpp:128 21 com.apple.WebCore 0x5b883e3a0 WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document&, WebCore::ThreadableLoaderClient&, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest&&, WebCore::ThreadableLoaderOptions const&, WTF::RefPtr<WebCore::SecurityOrigin, WTF::DumbPtrTraits<WebCore::SecurityOrigin> >&&, std::__1::unique_ptr<WebCore::ContentSecurityPolicy, std::__1::default_delete<WebCore::ContentSecurityPolicy> >&&, WTF::String&&, WebCore::DocumentThreadableLoader::ShouldLogError) + 1232 DocumentThreadableLoader.cpp:172 20 com.apple.WebCore 0x5b883ebfc WebCore::DocumentThreadableLoader::loadRequest(WebCore::ResourceRequest&&, WebCore::SecurityCheckPolicy) + 1436 Expected.h:496 19 com.apple.WebCore 0x5b88c7d3e WebCore::CachedResourceLoader::requestRawResource(WebCore::CachedResourceRequest&&) + 46 CachedResourceLoader.cpp:304 18 com.apple.WebCore 0x5b88c60fc WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type, WebCore::CachedResourceRequest&&, WebCore::CachedResourceLoader::ForPreload, WebCore::CachedResourceLoader::DeferOption) + 7852 CachedResourceHandle.h:38 17 com.apple.WebCore 0x5b88c0aca WebCore::CachedResource::load(WebCore::CachedResourceLoader&) + 3082 memory:2595 16 com.apple.WebKit 0x5b03c23f5 WebKit::WebLoaderStrategy::loadResource(WebCore::Frame&, WebCore::CachedResource&, WebCore::ResourceRequest&&, WebCore::ResourceLoaderOptions const&, WTF::CompletionHandler<void (WTF::RefPtr<WebCore::SubresourceLoader, WTF::DumbPtrTraits<WebCore::SubresourceLoader> >&&)>&&) + 169 memory:2595 15 com.apple.WebCore 0x5b888a89f WebCore::SubresourceLoader::create(WebCore::Frame&, WebCore::CachedResource&, WebCore::ResourceRequest&&, WebCore::ResourceLoaderOptions const&, WTF::CompletionHandler<void (WTF::RefPtr<WebCore::SubresourceLoader, WTF::DumbPtrTraits<WebCore::SubresourceLoader> >&&)>&&) + 175 memory:2595 14 com.apple.WebCore 0x5b888100c WebCore::ResourceLoader::init(WebCore::ResourceRequest&&, WTF::CompletionHandler<void (bool)>&&) + 364 memory:2595 13 com.apple.WebCore 0x5b888aeac WebCore::SubresourceLoader::willSendRequestInternal(WebCore::ResourceRequest&&, WebCore::ResourceResponse const&, WTF::CompletionHandler<void (WebCore::ResourceRequest&&)>&&) + 908 utility:896 12 com.apple.WebCore 0x5b888cde9 WebCore::SubresourceLoader::willSendRequestInternal(WebCore::ResourceRequest&&, WebCore::ResourceResponse const&, WTF::CompletionHandler<void (WebCore::ResourceRequest&&)>&&)::$_1::operator()(WTF::CompletionHandler<void (WebCore::ResourceRequest&&)>&&, WebCore::ResourceRequest&&) + 361 memory:2595 11 com.apple.WebCore 0x5b8881d17 WebCore::ResourceLoader::willSendRequestInternal(WebCore::ResourceRequest&&, WebCore::ResourceResponse const&, WTF::CompletionHandler<void (WebCore::ResourceRequest&&)>&&) + 1383 DumbPtrTraits.h:41 10 com.apple.WebCore 0x5b887b871 WebCore::ResourceLoadNotifier::dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceRequest&, WebCore::ResourceResponse const&) + 193 ResourceLoadNotifier.cpp:132 9 com.apple.WebKit 0x5b03ea26c WebKit::WebFrameLoaderClient::dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceRequest&, WebCore::ResourceResponse const&) + 78 WebFrameLoaderClient.cpp:217 8 com.apple.WebKit 0x5b03b4f1f WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame(WebKit::WebPage&, WebKit::WebFrame&, unsigned long long, WebCore::ResourceRequest&, WebCore::ResourceResponse const&) + 183 WKSharedAPICast.h:133 7 WebKitTestRunnerInjectedBundle 0x5c7fb4b08 WTR::InjectedBundlePage::willSendRequestForFrame(OpaqueWKBundlePage const*, OpaqueWKBundleFrame const*, unsigned long long, OpaqueWKURLRequest const*, OpaqueWKURLResponse const*) + 1126 InjectedBundlePage.cpp:1214 6 com.apple.WebKit 0x5b01cc807 WKDataCreate + 35 utility:896 5 com.apple.WebKit 0x5b02f5419 API::Data::create(unsigned char const*, unsigned long) + 73 APIObject.h:265 4 com.apple.WebKit 0x5b016c6ea API::Object::newObject(unsigned long, API::Object::Type) + 698 APIObject.mm:0 3 com.apple.Foundation 0x1058fd138 NSAllocateObject + 19 2 libobjc.A.dylib 0x5b10f1faf class_createInstance + 73 1 libsystem_malloc.dylib 0x5b36e467d calloc + 30 0 libsystem_malloc.dylib 0x5b36e4015 malloc_zone_calloc + 139 ==== 2 (96 bytes) ROOT LEAK: <WKNSData 0x7fadea740b80> [64] 1 (32 bytes) _data + 16 --> 0x7fade54a1100 [32]
<rdar://problem/47815558>
Created attachment 361183 [details] Patch v1
Comment on attachment 361183 [details] Patch v1 Clearing flags on attachment: 361183 Committed r241034: <https://trac.webkit.org/changeset/241034>
All reviewed patches have been landed. Closing bug.