Changeset 222684 in webkit
- Timestamp:
- Sep 30, 2017 3:50:16 PM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r222674 r222684 1 2017-09-30 Darin Adler <darin@apple.com> 2 3 Have IPC::Connection::Client objects consistently invalidate the connection when destroyed 4 https://bugs.webkit.org/show_bug.cgi?id=177708 5 6 Reviewed by Anders Carlsson. 7 8 I ran into an intermittent crash when running regression tests. It looked like a connection 9 client was being called after it was destroyed. I did an audit of the all the connection 10 clients to make sure they all invalidate their connection before they are destroyed. 11 12 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 13 (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess): Invalidate the 14 connection since this object opened the connection. There is no obvious 15 guarantee that the connection will already be invalid when this is destroyed. 16 * StorageProcess/StorageToWebProcessConnection.cpp: 17 (WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection): Ditto. 18 * UIProcess/Plugins/PluginProcessProxy.cpp: 19 (WebKit::PluginProcessProxy::~PluginProcessProxy): Ditto. 20 * WebProcess/Network/NetworkProcessConnection.cpp: 21 (WebKit::NetworkProcessConnection::~NetworkProcessConnection): Ditto. 22 * WebProcess/Storage/WebToStorageProcessConnection.cpp: 23 (WebKit::WebToStorageProcessConnection::~WebToStorageProcessConnection): Ditto. 24 25 * StorageProcess/StorageToWebProcessConnection.h: Derive privately rather than publicly 26 from IPC::Connection::Client because we can, and this means we don't have to study quite 27 as much code to understand how this is used as a connection client. 28 * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: Ditto. 29 * WebProcess/Storage/WebToStorageProcessConnection.h: Ditto. 30 * WebProcess/WebPage/WebInspector.h: Ditto. 31 * WebProcess/WebPage/WebInspectorUI.h: Ditto. 32 33 * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: 34 (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer): Added a comment about a 35 reference cycle cycle leading to a leak that I believe exists here. 36 1 37 2017-09-29 Alex Christensen <achristensen@webkit.org> 2 38 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r222673 r222684 78 78 NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess() 79 79 { 80 m_connection->invalidate(); 80 81 #if USE(LIBWEBRTC) 81 82 if (m_rtcProvider) -
trunk/Source/WebKit/StorageProcess/StorageToWebProcessConnection.cpp
r220977 r222684 54 54 StorageToWebProcessConnection::~StorageToWebProcessConnection() 55 55 { 56 56 m_connection->invalidate(); 57 57 } 58 58 -
trunk/Source/WebKit/StorageProcess/StorageToWebProcessConnection.h
r220977 r222684 38 38 class WebSWServerConnection; 39 39 40 class StorageToWebProcessConnection : public RefCounted<StorageToWebProcessConnection>, p ublic IPC::Connection::Client, publicIPC::MessageSender {40 class StorageToWebProcessConnection : public RefCounted<StorageToWebProcessConnection>, private IPC::Connection::Client, private IPC::MessageSender { 41 41 public: 42 42 static Ref<StorageToWebProcessConnection> create(IPC::Connection::Identifier); -
trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp
r219050 r222684 81 81 PluginProcessProxy::~PluginProcessProxy() 82 82 { 83 if (m_connection) 84 m_connection->invalidate(); 85 83 86 ASSERT(m_pendingFetchWebsiteDataRequests.isEmpty()); 84 87 ASSERT(m_pendingFetchWebsiteDataCallbacks.isEmpty()); -
trunk/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp
r220857 r222684 67 67 68 68 m_isOpenInServer = sendSync(Messages::StorageToWebProcessConnection::EstablishIDBConnectionToServer(sessionID), Messages::StorageToWebProcessConnection::EstablishIDBConnectionToServer::Reply(m_identifier)); 69 70 // FIXME: This creates a reference cycle, so neither this object nor the IDBConnectionToServer will ever be deallocated. 69 71 m_connectionToServer = IDBClient::IDBConnectionToServer::create(*this); 70 72 } -
trunk/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h
r220887 r222684 37 37 class WebIDBResult; 38 38 39 class WebIDBConnectionToServer final : p ublic WebCore::IDBClient::IDBConnectionToServerDelegate, publicIPC::MessageSender, public RefCounted<WebIDBConnectionToServer> {39 class WebIDBConnectionToServer final : private WebCore::IDBClient::IDBConnectionToServerDelegate, private IPC::MessageSender, public RefCounted<WebIDBConnectionToServer> { 40 40 public: 41 41 static Ref<WebIDBConnectionToServer> create(PAL::SessionID); -
trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp
r222613 r222684 60 60 NetworkProcessConnection::~NetworkProcessConnection() 61 61 { 62 m_connection->invalidate(); 62 63 } 63 64 -
trunk/Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.cpp
r220977 r222684 47 47 WebToStorageProcessConnection::~WebToStorageProcessConnection() 48 48 { 49 m_connection->invalidate(); 49 50 } 50 51 -
trunk/Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.h
r220977 r222684 41 41 namespace WebKit { 42 42 43 class WebToStorageProcessConnection : public RefCounted<WebToStorageProcessConnection>, p ublic IPC::Connection::Client, publicIPC::MessageSender {43 class WebToStorageProcessConnection : public RefCounted<WebToStorageProcessConnection>, private IPC::Connection::Client, private IPC::MessageSender { 44 44 public: 45 45 static Ref<WebToStorageProcessConnection> create(IPC::Connection::Identifier connectionIdentifier) -
trunk/Source/WebKit/WebProcess/WebPage/WebInspector.h
r217924 r222684 37 37 class WebPage; 38 38 39 class WebInspector : public API::ObjectImpl<API::Object::Type::BundleInspector>, p ublicIPC::Connection::Client, public Inspector::FrontendChannel {39 class WebInspector : public API::ObjectImpl<API::Object::Type::BundleInspector>, private IPC::Connection::Client, public Inspector::FrontendChannel { 40 40 public: 41 41 static Ref<WebInspector> create(WebPage*); -
trunk/Source/WebKit/WebProcess/WebPage/WebInspectorUI.h
r212597 r222684 39 39 class WebPage; 40 40 41 class WebInspectorUI : public RefCounted<WebInspectorUI>, p ublicIPC::Connection::Client, public WebCore::InspectorFrontendClient {41 class WebInspectorUI : public RefCounted<WebInspectorUI>, private IPC::Connection::Client, public WebCore::InspectorFrontendClient { 42 42 public: 43 43 static Ref<WebInspectorUI> create(WebPage&);
Note: See TracChangeset
for help on using the changeset viewer.