WebKit Bugzilla
Attachment 360872 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-20190201103620.patch (text/plain), 8.30 KB, created by
Sihui Liu
on 2019-02-01 10:36:21 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2019-02-01 10:36:21 PST
Size:
8.30 KB
patch
obsolete
>Subversion Revision: 240850 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index f5995799fcff27682e84d143433aff35d4be80cc..0f07a6a2573ad09b6d3fe0e279f1138a940084ff 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2019-02-01 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-02-01 Simon Fraser <simon.fraser@apple.com> > > REGRESSION (r240698): fast/scrolling/sticky-to-fixed.html can cause a crash >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 61e73b490be963d03dc2065b5a59c20020462986..546339af7ebd14704daaf3fdd9297e14d256fb98 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,20 @@ >+2019-02-01 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-02-01 Michael Catanzaro <mcatanzaro@igalia.com> > > [SOUP] Improve use of PAL::SessionID in WebKitCookieManager >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 5db4b6dcfdaa703d82142377ee1bf18f40fcca86..b20c64532227ed678c550bf5b9fefb764e949fc7 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >@@ -263,7 +263,7 @@ void NetworkConnectionToWebProcess::didClose(IPC::Connection& connection) > auto idbConnections = m_webIDBConnections; > for (auto& connection : idbConnections.values()) > connection->disconnectedFromWebProcess(); >- >+ > m_webIDBConnections.clear(); > #endif > >@@ -753,14 +753,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 914d7bd685a054ae53da456507bd31b28d1ba7f0..b820258a168c7752210441a71e778b68b8a693c7 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 0496096395aaa911558b2681099f65f72baf5f27..67afabb6205e4d3dc9146e4e14179969f0df523f 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in >@@ -79,7 +79,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..f352200ddf58e2a173abad2785470c7ad8018e6e 100644 >--- a/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp >+++ b/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp >@@ -64,14 +64,11 @@ WebIDBConnectionToServer::WebIDBConnectionToServer(PAL::SessionID sessionID) > > m_isOpenInServer = sendSync(Messages::NetworkConnectionToWebProcess::EstablishIDBConnectionToServer(sessionID), Messages::NetworkConnectionToWebProcess::EstablishIDBConnectionToServer::Reply(m_identifier)); > >- // FIXME: This creates a reference cycle, so neither this object nor the IDBConnectionToServer will ever be deallocated. > m_connectionToServer = IDBClient::IDBConnectionToServer::create(*this); > } > > 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