WebKit Bugzilla
Attachment 359936 Details for
Bug 193688
: IndexedDB: leak WebIDBConnectionToServer in layout tests
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193688-20190123131550.patch (text/plain), 7.91 KB, created by
Sihui Liu
on 2019-01-23 13:15:51 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2019-01-23 13:15:51 PST
Size:
7.91 KB
patch
obsolete
>Subversion Revision: 240313 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 757c0fa8752c39d5c83e2d0e478e9269e7686d75..a89af649d76863c91e4d329e43ce370595d0986c 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2019-01-23 Sihui Liu <sihui_liu@apple.com> >+ >+ IndexedDB: leak WebIDBConnectionToServer in layout tests >+ https://bugs.webkit.org/show_bug.cgi?id=193688 >+ <rdar://problem/47353263> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Let IDBConnectionToServer keep a WeakPtr of IDBConnectionToServerDelegate. >+ >+ * Modules/indexeddb/client/IDBConnectionToServer.cpp: >+ (WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer): >+ * Modules/indexeddb/client/IDBConnectionToServer.h: >+ * Modules/indexeddb/client/IDBConnectionToServerDelegate.h: >+ > 2019-01-22 Fujii Hironori <Hironori.Fujii@sony.com> > > [WinCairo][WebKitTestRunner] Null dereference of GraphicsContext::m_data in GraphicsContext::releaseWindowsContext >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index f884697e615410ce9bf930f1392302421e4d6d4d..d307e086d3703d5ba77490f3923949eb5125e805 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,20 @@ >+2019-01-23 Sihui Liu <sihui_liu@apple.com> >+ >+ IndexedDB: leak WebIDBConnectionToServer in layout tests >+ https://bugs.webkit.org/show_bug.cgi?id=193688 >+ <rdar://problem/47353263> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * NetworkProcess/NetworkConnectionToWebProcess.cpp: >+ (WebKit::NetworkConnectionToWebProcess::didClose): >+ (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer): >+ (WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer): Deleted. >+ * NetworkProcess/NetworkConnectionToWebProcess.h: >+ * NetworkProcess/NetworkConnectionToWebProcess.messages.in: >+ * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: >+ (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer): >+ > 2019-01-22 Alex Christensen <achristensen@webkit.org> > > Fix an internal build failure after r240292 >diff --git a/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp b/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp >index fb50f6944ceaf07bac105054a925e1b3a939a25d..271a6534aef5e47736d6ae12ee728a204c2227da 100644 >--- a/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp >+++ b/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp >@@ -48,7 +48,7 @@ Ref<IDBConnectionToServer> IDBConnectionToServer::create(IDBConnectionToServerDe > } > > IDBConnectionToServer::IDBConnectionToServer(IDBConnectionToServerDelegate& delegate) >- : m_delegate(delegate) >+ : m_delegate(makeWeakPtr(delegate)) > , m_proxy(std::make_unique<IDBConnectionProxy>(*this)) > { > } >diff --git a/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h b/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h >index 851c342c4053c2f12daba2dc1341a7eef051707b..9cb140d78b253aef3f11041d48f0aacb57e72907 100644 >--- a/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h >+++ b/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h >@@ -146,7 +146,7 @@ private: > typedef void (IDBConnectionToServer::*ResultFunction)(const IDBResultData&); > void callResultFunctionWithErrorLater(ResultFunction, const IDBResourceIdentifier& requestIdentifier); > >- Ref<IDBConnectionToServerDelegate> m_delegate; >+ WeakPtr<IDBConnectionToServerDelegate> m_delegate; > bool m_serverConnectionIsValid { true }; > > HashMap<uint64_t, WTF::Function<void (const Vector<String>&)>> m_getAllDatabaseNamesCallbacks; >diff --git a/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h b/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h >index f217926ae06913ada8c3083e61fb2acefd8341e1..2862cbd1dd087086cca2424c6b7846fa4fc3ca79 100644 >--- a/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h >+++ b/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h >@@ -27,6 +27,7 @@ > > #if ENABLE(INDEXED_DATABASE) > >+#include <wtf/WeakPtr.h> > #include <wtf/text/WTFString.h> > > namespace WebCore { >@@ -53,7 +54,7 @@ struct IDBKeyRangeData; > > namespace IDBClient { > >-class IDBConnectionToServerDelegate { >+class IDBConnectionToServerDelegate : public CanMakeWeakPtr<IDBConnectionToServerDelegate> { > public: > virtual ~IDBConnectionToServerDelegate() = default; > >diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >index e634147debae13177721d71561db20658275aa0c..cfb1d29461177460a6ec85bebb4750cb5a9a9ca4 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >@@ -262,7 +262,7 @@ void NetworkConnectionToWebProcess::didClose(IPC::Connection& connection) > auto idbConnections = m_webIDBConnections; > for (auto& connection : idbConnections.values()) > connection->disconnectedFromWebProcess(); >- >+ > m_webIDBConnections.clear(); > #endif > >@@ -721,14 +721,6 @@ void NetworkConnectionToWebProcess::establishIDBConnectionToServer(PAL::SessionI > > m_webIDBConnections.set(serverConnectionIdentifier, WebIDBConnectionToClient::create(m_networkProcess, m_connection.get(), serverConnectionIdentifier, sessionID)); > } >- >-void NetworkConnectionToWebProcess::removeIDBConnectionToServer(uint64_t serverConnectionIdentifier) >-{ >- ASSERT(m_webIDBConnections.contains(serverConnectionIdentifier)); >- >- auto connection = m_webIDBConnections.take(serverConnectionIdentifier); >- connection->disconnectedFromWebProcess(); >-} > #endif > > #if ENABLE(SERVICE_WORKER) >diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >index 088de8fded14754838dfaa9d827f7e57e9291a88..b3e176d4b676f617f32ecd0dc76541a48321990f 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >@@ -175,7 +175,6 @@ private: > #if ENABLE(INDEXED_DATABASE) > // Messages handlers (Modern IDB). > void establishIDBConnectionToServer(PAL::SessionID, uint64_t& serverConnectionIdentifier); >- void removeIDBConnectionToServer(uint64_t serverConnectionIdentifier); > #endif > > #if ENABLE(SERVICE_WORKER) >diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in >index f245bca7dc6b2c71a79cc8a39059e9d14435df60..c71833213f59796d7aef767904cfa8850313b215 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in >@@ -73,7 +73,6 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver { > > #if ENABLE(INDEXED_DATABASE) > EstablishIDBConnectionToServer(PAL::SessionID sessionID) -> (uint64_t serverConnectionIdentifier) LegacySync >- RemoveIDBConnectionToServer(uint64_t serverConnectionIdentifier) > #endif > > #if ENABLE(SERVICE_WORKER) >diff --git a/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp b/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp >index 42e73c8225da91f00b8f1f4e6bf93de074658d1f..c12360cae06d05fba5235de19655eebc1bdd6b51 100644 >--- a/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp >+++ b/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp >@@ -70,8 +70,6 @@ WebIDBConnectionToServer::WebIDBConnectionToServer(PAL::SessionID sessionID) > > WebIDBConnectionToServer::~WebIDBConnectionToServer() > { >- if (m_isOpenInServer) >- send(Messages::NetworkConnectionToWebProcess::RemoveIDBConnectionToServer(m_identifier)); > } > > IPC::Connection* WebIDBConnectionToServer::messageSenderConnection()
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193688
:
359781
|
359796
|
359814
|
359936
|
360872